2017-04-12 90 views
0

由文本字段触发的键盘环境:Xcode的版本8.2(8C38)/夫特3.0隐藏经由resignFirstResponder

在视图textFiled目的是导线高达在经由IBAction为控制器命名textFieldReturn方法。相关的代码显示为遵循

class ViewController: UIViewController { 
    override func viewDidLoad() { 
     super.viewDidLoad() 
    } 

@IBAction func textFieldReturn(_ sender: Any) { 
     _ = (sender as AnyObject).resignFirstResponder() 
    } 

} 

我期待什么

当我打了虚拟键盘的返回键的功能textFieldReturn(_ :)将被调用,键盘会隐藏

问题观察家

函数没有被称为AF之三我拍了拍返回键,键盘仍然存在

资源

此代码尖晶石,通过尼尔来自书的iOS 10应用开发纲要的第16章的例子Symth (PP-114)

此代码与原始的代码之间唯一的区别是该函数的参数(发送者)的类型。这是AnyObject在原来的书,而我有任何默认情况下,所以我投来AnyObject的函数体问题内

它似乎是一个体面的书,但样本代码不为我工作。我怎样才能调用resignFirstResponder()方法时,我打回车键


另类尝试

而不是使用IBAction为的,我转委托的想法,我“VE设定VeiwController作为文本字段的代表

class ViewController: UIViewController, UITextFieldDelegate { 

    @IBOutlet weak var tempText: UITextField! //reference the TextField as the variable **tempText** in the controller 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     self.tempText.delegate = self //set up the delegation 
    } 

    func textFieldReturn(_ textField: UITextField) -> Bool { 
     textField.resignFirstResponder() 
     return(true) 
    } 
} 

问题

替代解决方案仍然无法正常工作。

感谢您的时间和帮助

回答

1

你为什么不使用的UITextField原委托功能在您的viewDidLoad以下?

我觉得默认的功能将工作,只要你想:

class ViewController: UIViewController, UITextFieldDelegate { 

    @IBOutlet weak var tempText: UITextField! //reference the TextField as the variable **tempText** in the controller 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     self.tempText.delegate = self //set up the delegation 
    } 

    func textFieldShouldReturn(_ textField: UITextField) -> Bool{ 
     textField.resignFirstResponder() 

     return false 
    } 
} 
+0

因此,有一个原来的委托功能,感谢这么多,我不知道有一个默认的功能为此,非常感谢。 – SLN

+0

但是为什么使用IBAction方式的第一个不工作? – SLN

+0

每当按下键盘的返回键时,函数textFieldShouldReturn总是被调用。所以没有其他方法可行。 –

1

这个替换您textFieldReturn方法,它应该只是罚款。

func textFieldShouldReturn(_ textField: UITextField) -> Bool { 
     textField.resignFirstResponder() 
     return true 
} 

请一定要保持()

self.tempText.delegate = self 
+0

textFieldShouldReturn做的作品,非常感谢 – SLN