辞去第一响应者 UITextfield
resign first responder UITextfield
我很抱歉 post 这个问题,因为它已被问过一百万次,但每当我尝试使用其中一种解决方案时,它要么已经过时,要么无法与我的一起使用代码。 (或者也许我只是做错了)
我有 5 个文本字段和一个文本视图,用于发送电子邮件,我正在尝试在完成后最小化键盘,但我不知道该怎么做。
我也试着让它转到下一个文本字段,直到最后一个,但这并不需要完成。
func textView(textView: UITextView, shouldChangeTextInRange: NSRange, replacementText text: String) -> Bool {
if text == "\n" {
text6.resignFirstResponder()
return false
}
return true
}
func textFieldShouldReturn(textField: UITextField) -> Bool {
if textField == self.text1 {
self.text2.becomeFirstResponder()
}
else if textField == self.text2 {
self.text3.becomeFirstResponder()
}
else if textField == self.text3 {
self.text4.becomeFirstResponder()
}
else if textField == self.text4 {
self.text5.becomeFirstResponder()
self.text5.resignFirstResponder();
}
return true;
}
这会起作用
self.view.endEditing(true)
首先你必须在 .h
中添加 UITextFieldDelegate
然后在 .m
yourtextfield.delegate = self
然后应用此代码
func textFieldShouldReturn(textField: UITextField!) -> Bool {
textField.resignFirstResponder()
return true;
}
@Peter Boesen:
完成后最小化键盘。即当按下 "return" 键时...在代码的主要部分进行注释之前您需要 x2 东西...
在您有 class ViewController: UIViewController
的视图控制器(代码)顶部 - 添加 UITextFieldDelegate
。所以最后它应该是这样的:
class ViewController: UIViewController, UITextFieldDelegate
在同一个View Controller(代码)中的func viewDidLoad
添加
self.textField.delegate = self
然后...如 'Abhinandan Pratap' 所述,合并以下代码以控制按下 'Return' 时键盘的行为:
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
但是,如果您想通过点击屏幕上的其他地方来最小化键盘,使用 'TouchesBegan'(前提是您不使用滚动视图)以下内容本身就足够了
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
self.view.endEditing(true)
}
如果您在屏幕上使用 scrollView,则需要结合使用 self.view.endEditing(true)
和 UITapGesture
来关闭键盘。
首先你必须确认 UITextFieldDelegate
func textFieldShouldReturn(textField: UITextField) -> Bool
{
textField.resignFirstResponder()
return true
}
有时两种方式都会有帮助 (Swift 4):
首先在你有 textFieldShouldReturn
方法的地方使用声明一个委托 UITextFieldDelegate
。
其次你必须在初始化中设置self.textField.delegate = self
部分(如往常一样 viewWillAppear(_ animated: Bool)
或 viewDidLoad
)。
然后填写方法为:
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
self.resignFirstResponder()
self.view.endEditing(true)
//or use on superView of textField
//superView.endEditing(true)
return true
}
我很抱歉 post 这个问题,因为它已被问过一百万次,但每当我尝试使用其中一种解决方案时,它要么已经过时,要么无法与我的一起使用代码。 (或者也许我只是做错了)
我有 5 个文本字段和一个文本视图,用于发送电子邮件,我正在尝试在完成后最小化键盘,但我不知道该怎么做。
我也试着让它转到下一个文本字段,直到最后一个,但这并不需要完成。
func textView(textView: UITextView, shouldChangeTextInRange: NSRange, replacementText text: String) -> Bool {
if text == "\n" {
text6.resignFirstResponder()
return false
}
return true
}
func textFieldShouldReturn(textField: UITextField) -> Bool {
if textField == self.text1 {
self.text2.becomeFirstResponder()
}
else if textField == self.text2 {
self.text3.becomeFirstResponder()
}
else if textField == self.text3 {
self.text4.becomeFirstResponder()
}
else if textField == self.text4 {
self.text5.becomeFirstResponder()
self.text5.resignFirstResponder();
}
return true;
}
这会起作用
self.view.endEditing(true)
首先你必须在 .h
中添加UITextFieldDelegate
然后在 .m
yourtextfield.delegate = self
然后应用此代码
func textFieldShouldReturn(textField: UITextField!) -> Bool {
textField.resignFirstResponder()
return true;
}
@Peter Boesen:
完成后最小化键盘。即当按下 "return" 键时...在代码的主要部分进行注释之前您需要 x2 东西...
在您有
class ViewController: UIViewController
的视图控制器(代码)顶部 - 添加UITextFieldDelegate
。所以最后它应该是这样的:class ViewController: UIViewController, UITextFieldDelegate
在同一个View Controller(代码)中的func
viewDidLoad
添加self.textField.delegate = self
然后...如 'Abhinandan Pratap' 所述,合并以下代码以控制按下 'Return' 时键盘的行为:
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
但是,如果您想通过点击屏幕上的其他地方来最小化键盘,使用 'TouchesBegan'(前提是您不使用滚动视图)以下内容本身就足够了
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
self.view.endEditing(true)
}
如果您在屏幕上使用 scrollView,则需要结合使用 self.view.endEditing(true)
和 UITapGesture
来关闭键盘。
首先你必须确认 UITextFieldDelegate
func textFieldShouldReturn(textField: UITextField) -> Bool
{
textField.resignFirstResponder()
return true
}
有时两种方式都会有帮助 (Swift 4):
首先在你有 textFieldShouldReturn
方法的地方使用声明一个委托 UITextFieldDelegate
。
其次你必须在初始化中设置self.textField.delegate = self
部分(如往常一样 viewWillAppear(_ animated: Bool)
或 viewDidLoad
)。
然后填写方法为:
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
self.resignFirstResponder()
self.view.endEditing(true)
//or use on superView of textField
//superView.endEditing(true)
return true
}