单击文本字段将使键盘出现。用户按下返回键时如何隐藏它?
单击文本字段将使键盘出现。用户按下返回键时如何隐藏它?
Answers:
首先让您的文件代理为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:
提醒。肯定已经忘记了,以前的代码无法正常工作。
在Swift中尝试一下,
步骤1:将委托设置为自己的委托textField
textField.delegate = self
步骤2:在您的类声明下方添加此UITextFieldDelegate,
extension YourClassName: UITextFieldDelegate {
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
}
迅速执行以下操作:
首先在您的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
}
试试这个,
[textField setDelegate: self];
然后,在textField委托方法中
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
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)
}
}
好的,我认为对于新手来说,事情可能会有些混乱。我认为正确的答案是以上所有因素的结合,至少在Swift4中是这样。
创建扩展或使用您想在其中使用ViewController的方法,但请确保实现UITextFieldDelegate。出于可重用性的考虑,我发现使用扩展更容易:
extension UIViewController : UITextFieldDelegate {
...
}
但是替代方法也可以:
class MyViewController: UIViewController {
...
}
添加方法textFieldShouldReturn(取决于扩展名或ViewController中的上一个选项)
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
return textField.endEditing(false)
}
在viewDidLoad方法中,将文本字段的委托设置为self
@IBOutlet weak var myTextField: UITextField!
...
override func viewDidLoad() {
..
myTextField.delegte = self;
..
}
那应该是全部。现在,当你按下return
的textFieldShouldReturn
应该叫。
定义此类,然后将您的文本字段设置为使用该类别,当自动按回车键时,这将使整个隐藏键盘自动化。
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
}
}
然后,您在情节提要中需要做的就是将字段设置为使用类: