IOS 学习笔记 软键盘
目录
1.1.12 ASCII Capable Number Pad类型
三 代码设置Keyboard Type、Return Key
软键盘
上一篇:IOS 学习笔记 UITextView UITextField 协议
在学习UITextView UITextField的过程中使用了如那键盘的输入,那么这一篇将学习软键盘的知识点;
一 软键盘的种类
在使用iphone的过程中我们会体验到不同风格或者是种类的软键盘,接着使用上一篇的布局,如下图:
在查看TextField的属性检查器中的属性的时候有其中有一项Keyboard Type,一共有12个选项,默认的不算的话就11个选项,也就是说一共有11种风格的键盘样式,下面仅展示了三种风格键盘。
1.1.1 Default类型
1.1.2 ASCII Capable 类型
Keyboard Type = ASCII Capable
1.1.3 Number and Punctuation
数字和标点,Keyboard Type = Number and Punctuation
1.1.4 URL类型
Keyboard Type = URL
1.1.5 Number Pad
纯数字的键盘 ,Keyboard Type = Number Pad
1.1.6 Phone Pad
电话拨号键盘
Keyboard Type = Phone Pad
1.1.7 Name Phone Pad 类型
Keyboard Type = Name Phone Pad
1.1.8 E-mail Address类型
邮件类型键盘,Keyboard Type = E-mail Address
1.1.9 Decimal Pad 类型
Decimal英文翻译是:十进制,Decimal Pad应该翻译为:带小数位的键盘
Keyboard Type = Decimal Pad
1.1.10 Twitter 类型
Keyboard Type = Twitter
1.1.11 Web Search类型
Keyboard Type = Web Search
1.1.12 ASCII Capable Number Pad类型
Keyboard Type = ASCII Capable Number Pad
1.2 如何选择软键盘类型
实际开发过程中我们遇到的输入框对软键盘的需求是不同的,这里不用过于担心去选择那种类型,根据需求来定,比如有的只要求输入电话号码,那么就选择Phone Pad、电话号码获取验证码,然后输入,那么弹出的软键盘类型只需要Number Pad,等等。
二 return键
在属性检查其中有 Return Key这个属性,如下图
当选中Keyboard Type = Default,Return Key = Join、google、continue后,如下图,
也就是说可以通过选择不同的Return Key,让return按钮显示不同的文字。
三 代码设置Keyboard Type、Return Key
可以通过代码来设置上面所述的内容,如下
self.textField.keyboardType = UIKeyboardTypeURL;
self.textField.returnKeyType = UIReturnKeyGo;
四 软键盘通知
4.1 软键盘通知类型
软键盘在打开和关闭的时候会发出通知,回调对应的方法。
键盘显示通知:UIKeyboardDidShowNotification
键盘消失通知:UIKeyboardDidHideNotification
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:<#animated#>];
//注册软键盘显示通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardShow:) name:UIKeyboardDidShowNotification object:nil];
//注册软键盘消失通知
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyboardHide) name:UIKeyboardDidHideNotification object:nil];
}
- (void)viewWillDisappear:(BOOL)animated {
//注册软键盘显示通知
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardDidShowNotification object:nil];
//注销软键盘消失通知
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardDidHideNotification object:nil];
}
- (void) keyboardShow:(NSNotification *) notification {
NSLog(@"Keyboard show")
}
- (void) keyboardHide:(NSNotification *) notification {
NSLog(@"Keyboard hide")
}
4.2 软键盘的关闭
软键盘在我们触发可编辑的视图,如TextField和TextView 的时候会自动的弹出,不需要手动设置属性,但是关闭的时候却不行,需要我们处理相关代码。
软键盘不能关闭的原因是TextField或者TextView处于编辑状态的时候是“第一响应者”,如果需要软键盘消失,需要其放弃这个“第一响应者”的身份。
在IOS中响应事件是通过一个响应链从一个到下一个传递的,如果其中一个事件响应者没有作出响应,事件将会继续往下传递,“第一响应者”也就是这个事件响应者链条中的第一位置的响应者。
放弃这个身份可以通过UIResponder的resignFirstResponder函数实现,下面我们将在TextField的return按键的响应回调函数中对TextField做放弃“第一响应者”的操作,如下:
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
NSLog(@"UITextField retrun 按键被调用了");
[self.textField resignFirstResponder];
return YES;
}
当软键盘中的return被按下的时候,就会回调textFieldShouldReturn,那么textField就会放弃第一响应者的身份,软键盘将会被隐藏调。