十年专注于品牌网站建设 十余年专注于网站建设_小程序开发_APP开发,低调、敢创新、有情怀!
南昌百恒网络微信公众号 扫一扫关注
小程序
tel-icon全国服务热线:400-680-9298,0791-88117053
扫一扫关注百恒网络微信公众号
扫一扫打开百恒网络微信小程序

百恒网络

南昌百恒网络

TextField和TextView控件中如何关闭键盘?

百恒网络 2017-09-28 5088

在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开发、网站设计、微信开发、网站推广等服务,如有需要,欢迎大家来电咨询,洽谈合作!


400-680-9298,0791-88117053
扫一扫关注百恒网络微信公众号
扫一扫打开百恒网络小程序

欢迎您的光顾,我们将竭诚为您服务×

售前咨询 售前咨询
 
售前咨询 售前咨询
 
售前咨询 售前咨询
 
售前咨询 售前咨询
 
售前咨询 售前咨询
 
售后服务 售后服务
 
售后服务 售后服务
 
备案专线 备案专线
 
×