1.inputAccessoryView
UITextFields和UITextViews有一個inputAccessoryView的屬性经备,當(dāng)你想在鍵盤上展示一個自定義的view時杨赤,你就可以設(shè)置該屬性。你設(shè)置的view就會自動和鍵盤keyboard一起顯示了喇嘱。
需要注意的是,你所自定義的view既不應(yīng)該處在其他的視圖層里卦方,也不應(yīng)該成為其他視圖的子視圖鳄哭。其實(shí)也就是說,你所自定義的view只需要賦給屬性inputAccessoryView就可以了萎胰,不要再做其他多余的操作。
我們在使用UITextView和UITextField的時候棚辽,可以通過它們的inputAccessoryView屬性給輸入時呼出的鍵盤加一個附屬視圖技竟,通常是工具條,用來豐富鍵盤的使用
2.inputView
inputView就是顯示鍵盤的view,如果重寫這個view則不再彈出鍵盤,而是彈出自己的view.如果想實(shí)現(xiàn)當(dāng)某一控件變?yōu)榈谝豁憫?yīng)者時不彈出鍵盤而是彈出我們自定義的界面屈藐,那么我們就可以通過修改這個inputView來實(shí)現(xiàn)榔组,比如彈出一個日期拾取器熙尉。
inputView不會隨著鍵盤出現(xiàn)而出現(xiàn),設(shè)置了InputView只會當(dāng)UITextField或者UITextView變?yōu)榈谝幌鄳?yīng)者時顯示出來搓扯,不會顯示鍵盤了检痰。設(shè)置了InputAccessoryView,它會隨著鍵盤一起出現(xiàn)并且會顯示在鍵盤的頂端锨推。InutAccessoryView默認(rèn)為nil
同時設(shè)置時
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標(biāo)簽)自定義鍵盤方式思路:
1铅歼、直接設(shè)置readOnly輸入是就沒有了光標(biāo),這種方式體驗(yàn)不好换可,所以可以采用監(jiān)聽鍵盤彈出的方式椎椰,隱藏鍵盤。
[[NSNotificationCenter defaultCenter] addObserver:self
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? selector:@selector(keyboardWasShown:)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? name:UIKeyboardDidShowNotification object:nil];
? ? [[NSNotificationCenter defaultCenter] addObserver:self
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? selector:@selector(keyboardWillShow:)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? name:UIKeyboardWillShowNotification object:nil];
//隱藏系統(tǒng)鍵盤
- (void)keyboardWillShow:(NSNotification *)Notification{
? ? UIView* tempWindow = [[[UIApplication sharedApplication] windows] lastObject];
? ? tempWindow.hidden = YES;
? ? [tempWindow setAlpha:0];
}
//顯示自定義鍵盤
- (void)keyboardWasShown:(NSNotification *) Notification{
? ? // 添加顯示你的自定義鍵盤
}