Ios UITextfield无法失去焦点,并且代码行未执行
我有一个Ios UITextfield无法失去焦点,并且代码行未执行,ios,swift,uitextfield,focus,Ios,Swift,Uitextfield,Focus,我有一个UITextField,它在一个名为PopOver()的函数中调用一个PopOver 在popover内,用户从tableview中选择一个项目,然后按ok 在OK(确定)按钮上,按self.dismissViewControllerAnimated(true,completion:nil) 问题是,一旦弹出框被取消,文本字段并没有失去焦点,它仍然处于选中状态 我在函数的开头使用了resignFirstResponder来关闭键盘 我曾尝试在函数末尾使用resignFirstRespon
UITextField
,它在一个名为PopOver()
的函数中调用一个PopOver
在popover内,用户从tableview中选择一个项目,然后按ok
在OK(确定)按钮上,按self.dismissViewControllerAnimated(true,completion:nil)
问题是,一旦弹出框被取消,文本字段并没有失去焦点,它仍然处于选中状态
我在函数的开头使用了resignFirstResponder
来关闭键盘
我曾尝试在函数末尾使用resignFirstResponder
,并尝试使用另一个元素becomeFirstResponder
,但这些都不会导致文本字段失去焦点
如何从文本字段中删除焦点,是否有方法检测焦点丢失(或popover关闭),以便自动执行update()
我的代码如下:
import UIKit
class ViewController: UIViewController, UIPopoverControllerDelegate, UIPopoverPresentationControllerDelegate {
//declare variables
var popOverLocation: CGRect!
// Set outlets for all buttons
@IBAction func update(sender: AnyObject) {
texttest.text = newValue
}
@IBOutlet weak var texttest: UITextField!
@IBAction func testtexttouch(sender: AnyObject) {
texttest.resignFirstResponder()
popOverLocation = texttest.frame
popOver()
texttest.text = newValue
texttest.resignFirstResponder()
}
func update() {
texttest.text = newValue
}
//function for creating the popover
func popOver() {
//Read the height, and XY coordinates of the active button
var h = popOverLocation.height
var x = popOverLocation.origin.x
var y = popOverLocation.origin.y + h
//create the popover
var popoverContent = self.storyboard!.instantiateViewControllerWithIdentifier("Popover") as UIViewController
var nav = UINavigationController(rootViewController: popoverContent)
nav.modalPresentationStyle = UIModalPresentationStyle.Popover
var popover = nav.popoverPresentationController! as UIPopoverPresentationController
popover.sourceView = self.view
popover.delegate = self
//set the size of the popover
popoverContent.preferredContentSize = CGSizeMake(200,300);
//set the direction the popover arrow is allowed to point
popover.permittedArrowDirections = UIPopoverArrowDirection.Up
//using the buttons coordinates set the location of the popover
popover.sourceRect = CGRectMake(x,y,0,0)
self.presentViewController(nav, animated: true, completion: nil)
}
}
如果要忽略用户输入,为什么要使用UITextField?我将使用popover作为自定义用户输入。(虽然有了一种检测弹出窗口关闭的方法,我可以作弊并用按钮替换文本字段,然后更新按钮文本)我会使用带有轻触手势识别器的按钮或标签,这对您想要实现的目标更有意义何时调用testtexttouch?teesttexttouch处于编辑状态