在ios开发控件中,TextField和TextView与Label一样,也是文本类控件,是可以编辑文本内容的。在控件内容编辑方面,三者都可以通过代码、双击控件和属性检查器中的Text属性来实现,但是TextField和 TextView比Label多了一个键盘的使用。一旦TextField和TextView等控件处于编辑状态,系统就会智能地弹出键盘,而不需要做任何额外的操作。但是,关闭键盘就不像打开键盘这样顺利了,我们需要用代码去实现。 那么在TextField和TextView控件中如何关闭键盘?下面南昌APP制作开发公司-百恒网络就来为大家介绍一下:
在介绍关闭键盘的方法之前,我们先了解键盘不能自动关闭的原因。当TextField或TextView处于编辑状态时,这些控件变成了“第一响应者”。要关闭键盘,就要放弃“第一响应者”的身份。在iOS中,事件沿着响应者链从一个响应者传到下一个响应者,如果其中一个响应者没有对事件做出响应,那么该事件会重新向下传递。
顾名思义,“第一响应者”是响应者链中的第一个,不同的控件成为“第一响应者”之后的“表现”不太一致。TextField和TextView等输入类型的控件会出现键盘,而我们只有让这些控件放弃它们的“第一响应者”身份, 键盘才会关闭。
要想放弃“第一响应者”身份,需要调用UIResponder类中的resignFirstResponder方法,此方法一般在点击 键盘的return键或者是背景视图时触发,百恒网络为大家介绍一个采用点击return键关闭键盘的方式。要实现这个操作,可以利用 TextField和TextView的委托协议实现。相关的实现代码是在ViewController文件中,具体如下所示:
class ViewController: UIViewController, UITextFieldDelegate, UITextViewDelegate {
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
//通过委托实现放弃第一响应者
//UITextField委托方法
func textFieldShouldReturn(textField: UITextField) -> Bool { textField.resignFirstResponder() ①
return true
}
/通过委托实现放弃第一响应者
//UITextView委托方法
func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool {
if (text == "n") {
textView.resignFirstResponder()
return false
}
return true
}
}
@implementation ViewController
//通过委托来放弃“第一响应者”
#pragma mark - UITextField Delegate Method
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder]; ①
return YES;
}
//通过委托来放弃“第一响应者”
#pragma mark - UITextView Delegate Method
-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:
(NSRange)range replacementText:(NSString *)text
{
if([text isEqualToString:@"n"]) {
[textView resignFirstResponder];
return NO;
}
return YES;
}
@end
在上述代码中,textFieldShouldReturn:方法是UITextFieldDelegate委托协议中定义的方法,在用户点击键 盘时调用,第①行代码用于关闭键盘。与此类似,textView:shouldChangeTextInRange:replacementText:是由 UITextViewDelegate委托协议提供的方法,它也是在用户点击键盘时被调用。
另外,如果界面中有很多控件,或者控件的位置比较靠近屏幕下方,控件就很可能会被弹出的键盘挡住,此时可以添加UIScrollView控件来解决。
关于在TextField和TextView控件中关闭键盘的方法就已经讲完了,如果大家还有哪些不太明白的地方可随时来电和我们联系,百恒专业为您讲解。此外,本公司专业为您提供南昌APP开发、网站设计、微信开发、网站推广等服务,如有需要,欢迎大家来电咨询,洽谈合作!