Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UITextfield无法失去焦点,并且代码行未执行_Ios_Swift_Uitextfield_Focus - Fatal编程技术网

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处于编辑状态