我想用这篇文章简单记录下如何自定义软键盘。
软键盘使用的几种方法:
1:使用系统自带键盘
2:使用用户自定义的键盘来取代系统自定义的键盘
3:让自定义的键盘和系统的键盘共同存在
4:直接修改系统键盘
下面详细介绍
1:使用系统自定义键盘
iphone已经给我们提供了系统自定义的软键盘,并且提供了适用与大多数情况下的软键盘,比如:有的是专门的数字键盘,有的是数字和字符都含有的软键盘,这个可以通过属性(KeyboardType)来设定。
typedef enum
{
UIKeyboardTypeDefault, // Default type for the current input method.
UIKeyboardTypeASCIICapable, // Displays a keyboard which can enter ASCII characters, non-ASCII keyboards remain active
UIKeyboardTypeNumbersAndPunctuation, // Numbers and assorted punctuation.
UIKeyboardTypeURL, // A type optimized for URL entry (shows . / .com prominently).
UIKeyboardTypeNumberPad, // A number pad (0-9). Suitable for PIN entry.
UIKeyboardTypePhonePad, // A phone pad (1-9, *, 0, #, with letters under the numbers).
UIKeyboardTypeNamePhonePad, // A type optimized for entering a person's name or phone number.
UIKeyboardTypeEmailAddress, // A type optimized for multiple email address entry (shows space @ . prominently).
#if __IPHONE_4_1 <= __IPHONE_OS_VERSION_MAX_ALLOWED
UIKeyboardTypeDecimalPad, // A number pad with a decimal point.
#endif
UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable, // Deprecated
} UIKeyboardType;
从上面我们可以看出,Apple已经给我们提供了好几种形式的输入软件键盘,我们仅仅通过设置属性(KeyboardType)就可以调用相应的键盘,比如:
textField.keyboardType=UIKeyboardTypeNumberPad;
1.1:有写键盘,我们还可以自定义软键盘Reture键的类型,
typedef enum
{
UIReturnKeyDefault,
UIReturnKeyGo,
UIReturnKeyGoogle,
UIReturnKeyJoin,
UIReturnKeyNext,
UIReturnKeyRoute,
UIReturnKeySearch,
UIReturnKeySend,
UIReturnKeyYahoo,
UIReturnKeyDone,
UIReturnKeyEmergencyCall,
} UIReturnKeyType;
同样的,apple也是已经给我们提供了比较多的return键盘的类型。
这样我们就可以绑定UITextField输入控件调出软键盘后单击reture键盘,触发的函数,
第一步,要帮顶UITextField的委托
第二步:定义return绑定的回调函数:
参考代码:
m_userName.returnKeyType = UIReturnKeyNext;
m_userName.delegate= self;
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
//在这里面写入单击键盘RETURE键,之后相应的函数。
return YES;
}
这里我想另外的添加一点知识:
如何让UITextField获取键盘输入焦点:[self.m_userPassword becomeFirstResponder];
我们使用自定义键盘,关键就是选择不同的键盘类型,然后根据实际情况,处理对应的回调函数
2:完全使用用户自定义的键盘来取代系统自定义的键盘
这里就是我们放弃系统自带的键盘,然后使用我们自定义的键盘视图
参考代码:
UIView *keyView ;
Self.textFieldView.inputView = keyView;//输入我们自定义的键盘
self.textFieldView.inputAccessoryView = nil;
运行程序后,当再次调用键盘后就会出现我们自定义的键盘。
3:让自定义的键盘和系统的键盘共同存在
同上面的自定义键盘一样,常见一个新的XIB文件以及一个想关联的一个视图类,
参考代码:
UIView *keyView ;
Self.textFieldView.inputView = nil;//输入我们自定义的键盘
self.textFieldView.inputAccessoryView = keyView;
对你2、3的参考代码你可能就会明白,inputView和inputAccessoryView属性的作用了。
我们可以将键盘看成有两部分组成(当然,键盘还会有其他的部分组成),一部分是inputView,一部分是InputAccessoryView,并且,inputView在系统键盘的下面的部分,我们调用的系统默认键盘的时候,我们看到的部分就是这个InputView(输入视图),而这个InputAccessoryView就是键盘顶部的一个部分,当我Nil的时候则不显示,当我们给这个属性赋值的时候,就会显示这个我们添加的视图。
她就像,比如,UITableView的UITableViewHeaderView的那部分视图,如果不设置就看不到,如果设置就可以看到。
当然,仅仅有这些还是不够的,我们还要为我们自定的键盘中的按键添加对应的响应函数。
THE END!