
customKeyboard.gif
一、CustomKeyboardView :顯示的鍵盤view
二、keyModel:鍵盤model,定義鍵盤字母枚舉類型, 存儲鍵盤上btn顯示的數(shù)據(jù)源。
三、KeyboardModeHandler:為處理各種類型鍵盤數(shù)據(jù)源,即為MVVM中的ViewModel層。
四、KeyBoardCell:自定義鍵盤cell,定義鍵盤操作枚舉類型(輸入數(shù)字、輸入小數(shù)點、輸入運算符等)。
五、WaterFallLayout:鍵盤的瀑布流。
六、使用
UITextField 和 UITextView 添加自定義鍵盤
CustomKeyboardView *keyBoardView = [[CustomKeyboardView alloc] initWithKeyboardType:sender.tag inputSource:_tf];
keyBoardView.inputText = _tf.text;
_tf.inputView = keyBoardView;
keyBoardView.closeKeyboardBlock = ^{
//TODO
[_tf resignFirstResponder];
};
keyBoardView.confirmBlock = ^{
//TODO
[_tf resignFirstResponder];
};
UISearchBar 添加自定義鍵盤
UITextField *searchTF = [_searchBar valueForKeyPath:@"_searchField"];
CustomKeyboardView *keyboardView = [[CustomKeyboardView alloc] initWithKeyboardType:KeyBoardTypeNormal inputSource:searchTF];
searchTF.inputView = keyboardView;
keyboardView.closeKeyboardBlock = ^{
//TODO
[_searchBar resignFirstResponder];
forState:UIControlStateNormal];
};
keyboardView.confirmBlock = ^{
//TODO
[_searchBar resignFirstResponder];
};
七、注意點:記得實現(xiàn)UITextFieldDelegate代理方法
- (BOOL)textField:(UITextField *)textField
shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
return YES;
}