textFieldShouldReturn根本没有调用该函数:没有错误,但键盘根本没有响应.
我的情况与按下返回键时如何在swift中隐藏键盘不同?在我的情况下,根本没有发生任何事情,其他情况都在Objective-C中.
这是我的代码:
import UIKit
class ViewController: UIViewController {
@IBOutlet var textField: UITextField!
func textFieldShouldReturn(textField: UITextField) -> Bool {
resignFirstResponder()
return true
}
}
Run Code Online (Sandbox Code Playgroud)
textField是我的故事板上文本字段的出口.我也试过self.endEditing而不是resignFirstResponder.
nhg*_*rif 35
这个答案的其余部分仍然非常有用,我会把它留在那里因为它可以帮助其他的问题......但是在这里,我错过了这个具体例子的明显问题......
我们没有打电话resignFirstResponder给文本字段.我们在视图控制器上调用它.我们需要在文本字段中调用它,因此请将代码修改为如下所示:
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
Run Code Online (Sandbox Code Playgroud)
A UITextField只会textFieldShouldReturn在作为其委托的对象上调用该属性.
我们可以通过添加一个viewDidLoad方法来以编程方式解决此问题:
override func viewDidLoad() {
super.viewDidLoad()
self.textField.delegate = self
}
Run Code Online (Sandbox Code Playgroud)
但我们也可以在构建时通过故事板进行设置.
右键单击文本字段以检查代理是否已设置:

如果旁边的那个圆圈delegate未填充,我们还没有为我们设置委托UITextField.
要设置代理,请将鼠标悬停在此圈子上.它将变为加号.现在单击并拖动到要委派文本字段的视图控制器(文本字段所属的视图控制器).

当您将视图控制器作为委托适当地挂钩时,此菜单应如下所示:

如果使用 Swift 3+,则必须在第一个属性之前添加下划线。喜欢:
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
Run Code Online (Sandbox Code Playgroud)
这在 Apple 文档中也有很好的记录。 https://developer.apple.com/documentation/uikit/uitextfielddelegate/1619603-textfieldshouldreturn
小智 5
我注册了 Swift 4 Udemy 课程,讲师说除了 Cntrl 之外还要为 ViewController 添加 UITextFieldDelegate 类 - 从 textField 拖动到 ViewController 按钮并选择委托。
导入 UIKit
class ViewController: UIViewController, UITextFieldDelegate {
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12858 次 |
| 最近记录: |