inputAccessoryView:
UITextFields and UITextViews have an inputAccessoryView property, which you can set to any view, that is automatically displayed above and animated with the keyboard.
Note that the view you use should neither be in the view hierarchy elsewhere, nor should you add it to some superview, this is done for you.
翻译:
UITextFields和UITextView有一个inputAccessoryView的属性,当你想在键盘上展示一个自定义的view时,你就可以设置该属性。你设置的view就会自动和键盘keyboard一起显示了。
需要注意的是,你所自定义的view既不应该处在其他的视图层里,也不应该成为其他视图的子视图。其实也就是说,你所自定义的view只需要赋给属性inputAccessoryView就可以了,不要再做其他多余的操作。
http://www.cnblogs.com/xingchen/archive/2011/08/29/2157446.html
我想用这篇文章简单记录下如何自定义软键盘。
软键盘使用的几种方法:
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的那部分视图,如果不设置就看不到,如果设置就可以看到。
当然,仅仅有这些还是不够的,我们还要为我们自定的键盘中的按键添加对应的响应函数。