1.inputAccessoryView
UITextFields和UITextViews有一个inputAccessoryView的属性,当你想在键盘上展示一个自定义的view时,你就可以设置该属性。你设置的view就会自动和键盘keyboard一起显示了。
需要注意的是,你所自定义的view既不应该处在其他的视图层里,也不应该成为其他视图的子视图。其实也就是说,你所自定义的view只需要赋给属性inputAccessoryView就可以了,不要再做其他多余的操作。
我们在使用UITextView和UITextField的时候,可以通过它们的inputAccessoryView属性给输入时呼出的键盘加一个附属视图,通常是工具条,用来丰富键盘的使用
2.inputView
inputView就是显示键盘的view,如果重写这个view则不再弹出键盘,而是弹出自己的view.如果想实现当某一控件变为第一响应者时不弹出键盘而是弹出我们自定义的界面,那么我们就可以通过修改这个inputView来实现,比如弹出一个日期拾取器。
inputView不会随着键盘出现而出现,设置了InputView只会当UITextField或者UITextView变为第一相应者时显示出来,不会显示键盘了。设置了InputAccessoryView,它会随着键盘一起出现并且会显示在键盘的顶端。InutAccessoryView默认为nil
同时设置时
UIView * view = [[UIView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 100)]; view.backgroundColor = [UIColor redColor]; UIView * view1 = [[UIView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 100)]; view1.backgroundColor = [UIColor blueColor]; UITextField * tf = [[UITextField alloc]initWithFrame:CGRectMake(50, 100, 400, 40)]; tf.backgroundColor = [UIColor yellowColor]; tf.inputView = view; tf.inputAccessoryView = view1; [self.view addSubview:tf];
对于非原生(如H5input标签)自定义键盘方式思路:
1、直接设置readOnly输入是就没有了光标,这种方式体验不好,所以可以采用监听键盘弹出的方式,隐藏键盘。
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWasShown:)
name:UIKeyboardDidShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillShow:)
name:UIKeyboardWillShowNotification object:nil];
//隐藏系统键盘
- (void)keyboardWillShow:(NSNotification *)Notification{
UIView* tempWindow = [[[UIApplication sharedApplication] windows] lastObject];
tempWindow.hidden = YES;
[tempWindow setAlpha:0];
}
//显示自定义键盘
- (void)keyboardWasShown:(NSNotification *) Notification{
// 添加显示你的自定义键盘
}