当单击文本字段时,会弹出键盘。用户按下回车键后,如何隐藏键盘?
当单击文本字段时,会弹出键盘。用户按下回车键后,如何隐藏键盘?
首先让你的文件成为UITextField的代理
@interface MYLoginViewController () <UITextFieldDelegate>
@end
然后将此方法添加到您的代码中。
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
还需添加 self.textField.delegate = self;
在 viewDidLoad
中声明:
[yourTextField setDelegate:self];
然后,包括覆盖代理方法:
-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}
setDelegate:
方法。我之前忘记了这一点,代码也没有正常工作。 - Piper在Swift中尝试以下操作:
步骤1:将代理设置为textField
的自身
textField.delegate = self
步骤2:将此UITextFieldDelegate添加到您的类声明下方,
extension YourClassName: UITextFieldDelegate {
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
}
在Swift中,可以像这样做:
首先,在你的ViewController
中实现这个UITextFieldDelegate
,例如:
class MyViewController: UIViewController, UITextFieldDelegate {
....
}
现在在您想要在其中键入返回时取消键盘的 TextField 中添加委托,如下所示在
viewDidLoad 方法中或在初始化它的地方。
例如。
override func viewDidLoad() {
super.viewDidLoad()
myTextField.delegate = self
}
现在添加这个方法。
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
在视图控制器中,设置UITextField
的代理:field.delegate = self
,然后进行以下操作:
extension ViewController: UITextFieldDelegate {
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
// don't force `endEditing` if you want to be asked for resigning
// also return real flow value, not strict, like: true / false
return textField.endEditing(false)
}
}
设置UITextField
的代理,并重写textFieldShouldReturn
方法,在该方法中只需编写以下两行代码:
[textField resignFirstResponder];
return YES;
就是这样。在编写代码之前,不要忘记设置UITextField
的代理,并从属性窗口中将返回键类型设置为“完成”(command + shift + I)。
尝试这个:
[textField setDelegate: self];
然后,在textField代理方法中
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
定义这个类,然后将您的文本字段设置为使用此类,这将自动化整个隐藏键盘当按下返回键时。
class TextFieldWithReturn: UITextField, UITextFieldDelegate
{
required init?(coder aDecoder: NSCoder)
{
super.init(coder: aDecoder)
self.delegate = self
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool
{
textField.resignFirstResponder()
return true
}
}
在Storyboard中,您只需要将字段设置为使用该类:
最初的回答:
[self.view resignFirstResponder];
如果您想从视图中隐藏任何键盘,请使用[self.view endEditing:true];
好的,我认为对于初学者来说可能有点困惑。我认为在Swift4中正确的答案是以上所有内容的混合。
要么创建一个扩展,要么使用您想要使用此功能的ViewController,但请确保实现UITextFieldDelegate。出于可重用性考虑,我发现使用扩展更容易:
extension UIViewController : UITextFieldDelegate {
...
}
class MyViewController: UIViewController {
...
}
根据之前的选项,添加方法textFieldShouldReturn(在扩展中或在您的ViewController中)。
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
return textField.endEditing(false)
}
@IBOutlet weak var myTextField: UITextField!
...
override func viewDidLoad() {
..
myTextField.delegte = self;
..
}
这应该就是全部了。现在,当你按下return
键时,textFieldShouldReturn
方法将被调用。