单击文本字段可显示键盘。 当用户按下返回键时如何隐藏它?
答案 0 :(得分:270)
首先为UITextField
制作文件委托@interface MYLoginViewController () <UITextFieldDelegate>
@end
然后将此方法添加到您的代码中。
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
同时添加self.textField.delegate = self;
答案 1 :(得分:59)
在viewDidLoad
声明:
[yourTextField setDelegate:self];
然后,包括委托方法的覆盖:
-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}
答案 2 :(得分:15)
在 Swift ,
中尝试此操作 第1步:将代理设置为自己textField
textField.delegate = self
第2步:在您的班级声明下方添加此UITextFieldDelegate,
extension YourClassName: UITextFieldDelegate {
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
}
答案 3 :(得分:13)
在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
}
答案 4 :(得分:1)
设置UITextField
的委托,并且过度使用textFieldShouldReturn
方法,在该方法中只需写下以下两行:
[textField resignFirstResponder];
return YES;
就是这样。在编写代码之前,不要忘记设置UITextField
的委托,并在属性窗口中将Return键类型设置为“Done”。(command + shift + I)。
答案 5 :(得分:1)
试试这个,
[textField setDelegate: self];
然后,在textField委托方法
中- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
答案 6 :(得分:1)
您可以使用IBAction连接“触发主要操作”(右键单击UITextField),然后您可以终止第一个响应者(无需委派)。例 (斯威夫特4):
@IBAction func textFieldPrimaryAction(_ sender: UITextField) {
sender.resignFirstResponder()
...
}
答案 7 :(得分:1)
在视图控制器中设置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)
}
}
答案 8 :(得分:1)
如果要隐藏键盘以供特定键盘使用
[self.view resignFirstResponder];
如果要隐藏任何键盘,请使用[self.view endEditing:true];
答案 9 :(得分:0)
[textField resignFirstResponder];
使用此
答案 10 :(得分:0)
好吧,我认为对于新手来说,事情可能有点令人困惑。我认为正确的答案是以上所有因素的结合,至少在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
。
答案 11 :(得分:0)
定义该类,然后将您的文本字段设置为使用该类,当自动按回车键时,这将自动隐藏整个键盘。
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
}
}
然后在情节提要中需要做的就是将字段设置为使用类: