UITextView / UITextField在编辑时,在不做任何处理的情况下,系统默认会自动弹出系统键盘。在一些情况下,需要使用自定义键盘,因此需要对系统键盘处理,1) 自定义键盘就是inputView属性,但是inputView不会随着键盘的出现而出现,只会当UITextView / UITextField恢复第一响应者时显示出来,不再显示系统键盘了;2 ) 设置inputAccessoryView属性,它会随着键盘(系统或则自定义键盘)一块出现,并且在键盘的顶部,inputAccessoryView默认是nil,一般可以使用UIToolBar的实例对象来作为inputAccessoryView,用于回收 改变键盘;3 ) 注意:想使UIToolBar的实例对象在键盘的顶部,除了将这个实例对象设置为inputAccessoryView来实现外,也可以通过UIToolBar的实例对象的底部和所在的控制器view的底部一样来设置底部约束来实现。
常见的自定义键盘的两种使用需求:1 只需要自定义的键盘,不用切换到系统键盘 了 2 需要自定义键盘和系统键盘自由切换
1 只需要自定义键盘的处理方法:self.textView / textField为需要使用自定义键盘的UITextView / UITextField的实例对象,emoticonKeyboardView为自定义键盘
- [self.textView / textField resignFirstResponder];
- self.textView / textField.inputView = emoticonKeyboardView;
- [self.textView / textField becomeFirstResponder];
2 需要自定义键盘和系统键盘自由切换的处理方法:
- [self.textView / textField resignFirstResponder];
- self.textView / textField.inputView = self.textView / textField.inputView == nil ? emoticonKeyboardView : nil;
- [self.textView / textField becomeFirstResponder];
尤其注意:1 当self.textView / textField.inputView = nil时,会显示系统键盘。事实上,UITextView / UITextField在编辑时,在不做任何处理的情况下,系统默认会自动弹出系统键盘,此时就是inputView为nil。 2 键盘的隐藏设置:[self.textView / textField resignFirstResponder]