根本没有调用textFieldShouldReturn
函数:没有错误,但键盘根本没有响应。
我的情况与How to hide keyboard in swift on pressing return key?不同,因为在我的情况下根本没有发生任何事情,而其他情况则在Objective-C中。
这是我的代码:
import UIKit
class ViewController: UIViewController {
@IBOutlet var textField: UITextField!
func textFieldShouldReturn(textField: UITextField) -> Bool {
resignFirstResponder()
return true
}
}
textField是我的故事板上文本字段的出口。我还尝试了self.endEditing
而不是resignFirstResponder
。
答案 0 :(得分:29)
这个答案的其余部分仍然非常有用,我会把它留在那里,因为它可以帮助其他的问题......但是在这里,我错过了这个具体例子的明显问题......
我们没有在文本字段上调用resignFirstResponder
。我们在视图控制器上调用它。我们需要在文本字段中调用它,因此请将代码修改为如下所示:
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
UITextField
只会调用作为其委托对象的textFieldShouldReturn
属性。
我们可以通过添加viewDidLoad
方法以编程方式修复此问题:
override func viewDidLoad() {
super.viewDidLoad()
self.textField.delegate = self
}
但我们也可以在构建时通过故事板进行设置。
右键单击文本字段以检查代理是否已设置:
如果delegate
旁边的圈子未填充,我们尚未为UITextField
设置委托。
要设置代理,请将鼠标悬停在此圈子上。它将变为加号。现在单击并拖动到要委派文本字段的视图控制器(文本字段所属的视图控制器)。
当您将视图控制器作为委托适当地挂钩时,此菜单应如下所示:
答案 1 :(得分:3)
如果使用Swift 3+,则必须在第一个属性之前添加下划线。喜欢:
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
这在Apple文档中也有很好的记录。 https://developer.apple.com/documentation/uikit/uitextfielddelegate/1619603-textfieldshouldreturn
答案 2 :(得分:2)
我注册了Swift 4 Udemy课程,除了Cntrl之外,讲师还说要为ViewController添加UITextFieldDelegate类 - 从textField拖动到ViewController按钮并选择委托。
导入UIKit
class ViewController: UIViewController, UITextFieldDelegate {
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
}
答案 3 :(得分:1)
嗯,就我而言。我不小心启用了硬件键盘。确保未选中“连接到硬件键盘”,以使键盘显示在模拟器中。
硬件->键盘->连接到硬件键盘
希望这对其他人也有帮助!
答案 4 :(得分:0)
您可以在循环中设置所有textFields委托:
class GeometricShape{
Point ShapePoint;
public:
GeometricShape(Point coord){
ShapePoint = Point(coord);
}
virtual float getArea(){
return 0;
}
virtual float getPerimeter(){
return 0;
}
virtual void print(){
ShapePoint.print();
}
};