Swift:UITextField键盘回车键不起作用

ou6hu8tu  于 2023-09-30  发布在  Swift
关注(0)|答案(5)|浏览(135)

下面是我的代码隐藏键盘上按回车键,但它不工作.

class AddHall: UIViewController,UITextFieldDelegate {

    @IBOutlet weak var hallname: UITextField!

     override func viewDidLoad() {
         super.viewDidLoad()

         hallname.delegate = self
    }

    func textFieldShouldReturn(hallname : UITextField!) -> Bool { 
        hallname.resignFirstResponder()
        return true
    }
}
6kkfgxo0

6kkfgxo01#

实现正确的UITextField委托方法。

替换

func textFieldShouldReturn(hallname : UITextField!) -> Bool { 
    hallname.resignFirstResponder()
    return true
}

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

qeeaahzv2#

委托方法textFieldShouldReturn用于指定是否允许文本字段失去焦点-它只会在UITextField即将失去焦点之前被调用。你应该只做一些检查她,但不排除任何东西。
你所寻求的是对回车键做出React,然后关闭键盘。这是通过连接DidEndOnExit动作来完成的(**注意:**有很多其他事件具有类似的名称,您必须准确地使用这个),并在那里resign第一响应者。

然后,您可以删除textFieldShouldReturn(除非您在这里做一些额外的检查,而不是简单地返回true)。

unhi4e5o

unhi4e5o3#

像这样修改代码。您没有使用正确的委托方法。

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

weylhg0b4#

必须为TextField委托使用正确的函数名称
使用这个:

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

afdcj2ne5#

没有一个是单独为我工作的。而是:
1.确保ViewController从以下两者扩展:

class ViewController: UIViewController, UITextFieldDelegate

1.通过Storyboard或编程方式将委托从TextField添加到ViewController:

textField.delegate = self

1.在ViewController中定义函数:

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

相关问题