IOS 学习笔记 软键盘

目录

软键盘

一 软键盘的种类

1.1.1 Default类型

1.1.2 ASCII Capable 类型

1.1.3 Number and Punctuation

1.1.4 URL类型

1.1.5 Number Pad

1.1.6 Phone Pad

1.1.7 Name Phone Pad 类型

1.1.8 E-mail Address类型

1.1.9 Decimal Pad 类型

1.1.10 Twitter 类型

1.1.11 Web Search类型

1.1.12 ASCII Capable Number Pad类型

1.2  如何选择软键盘类型

二 return键

三 代码设置Keyboard Type、Return Key

四 软键盘通知

4.1 软键盘通知类型

4.2 软键盘的关闭


软键盘

上一篇:IOS 学习笔记 UITextView UITextField 协议

在学习UITextView UITextField的过程中使用了如那键盘的输入,那么这一篇将学习软键盘的知识点;

 

一 软键盘的种类

在使用iphone的过程中我们会体验到不同风格或者是种类的软键盘,接着使用上一篇的布局,如下图:

IOS 学习笔记 软键盘

在查看TextField的属性检查器中的属性的时候有其中有一项Keyboard Type,一共有12个选项,默认的不算的话就11个选项,也就是说一共有11种风格的键盘样式,下面仅展示了三种风格键盘。

1.1.1 Default类型

IOS 学习笔记 软键盘

 

1.1.2 ASCII Capable 类型

Keyboard Type = ASCII Capable

IOS 学习笔记 软键盘

 

1.1.3 Number and Punctuation

数字和标点,Keyboard Type = Number and Punctuation

IOS 学习笔记 软键盘

 

1.1.4 URL类型

Keyboard Type = URL

IOS 学习笔记 软键盘

 

1.1.5 Number Pad

纯数字的键盘 ,Keyboard Type = Number Pad

IOS 学习笔记 软键盘

 

1.1.6 Phone Pad

电话拨号键盘

Keyboard Type = Phone Pad

IOS 学习笔记 软键盘

 

1.1.7 Name Phone Pad 类型

Keyboard Type = Name Phone Pad

IOS 学习笔记 软键盘

 

 

1.1.8 E-mail Address类型

邮件类型键盘,Keyboard Type = E-mail Address

IOS 学习笔记 软键盘

 

 

1.1.9 Decimal Pad 类型

Decimal英文翻译是:十进制,Decimal Pad应该翻译为:带小数位的键盘

Keyboard Type = Decimal Pad

IOS 学习笔记 软键盘

 

1.1.10 Twitter 类型

Keyboard Type = Twitter

IOS 学习笔记 软键盘

 

1.1.11 Web Search类型

Keyboard Type = Web Search

IOS 学习笔记 软键盘

 

1.1.12 ASCII Capable Number Pad类型

Keyboard Type = ASCII Capable Number Pad

IOS 学习笔记 软键盘

 

1.2  如何选择软键盘类型

实际开发过程中我们遇到的输入框对软键盘的需求是不同的,这里不用过于担心去选择那种类型,根据需求来定,比如有的只要求输入电话号码,那么就选择Phone Pad、电话号码获取验证码,然后输入,那么弹出的软键盘类型只需要Number Pad,等等。

 

二 return键

在属性检查其中有 Return Key这个属性,如下图

IOS 学习笔记 软键盘

当选中Keyboard Type =  Default,Return Key = Join、google、continue后,如下图,

IOS 学习笔记 软键盘IOS 学习笔记 软键盘IOS 学习笔记 软键盘

也就是说可以通过选择不同的Return Key,让return按钮显示不同的文字。

 

 

三 代码设置Keyboard Type、Return Key

可以通过代码来设置上面所述的内容,如下

self.textField.keyboardType = UIKeyboardTypeURL;
self.textField.returnKeyType = UIReturnKeyGo;

IOS 学习笔记 软键盘

 

四 软键盘通知

 

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就会放弃第一响应者的身份,软键盘将会被隐藏调。