UITextField收起鍵盤的方法有:
讓textFiled放棄成為第一響應(yīng)者(resignFirstResponder)
讓view或者子view強(qiáng)制結(jié)束編輯狀態(tài)(endEditing)
1.輸入完以后用戶點(diǎn)擊return后收起鍵盤狸棍。
可以點(diǎn)擊return收起鍵盤并不意味著彈出來的鍵盤一定都有return這個(gè)按鍵趟咆,比如數(shù)字鍵盤類型就沒有,UIKeyboardTypeWebSearch類型的鍵盤return鍵就變成了Go鍵二跋,需要注意的是這時(shí)候的Go鍵相當(dāng)于return鍵茧球。
要想實(shí)現(xiàn)點(diǎn)擊return讓鍵盤收起症见,首先需要設(shè)置textField代理单芜,當(dāng)然還有遵循UITextFieldDelegate協(xié)議:
_textField.delegate =self;
然后實(shí)現(xiàn)協(xié)議方法- (BOOL)textFieldShouldReturn:(UITextField *)textField;,當(dāng)然你也可以在這個(gè)方法里 main實(shí)現(xiàn)一些需求邏輯剧罩,比如判斷輸入的內(nèi)容符不符合要求等。
- (BOOL)textFieldShouldReturn:(UITextField*)textField{return[textField resignFirstResponder];}
2.點(diǎn)擊背景后收起鍵盤
點(diǎn)擊背景收起鍵盤可以實(shí)現(xiàn)view的- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event方法一膨,然后執(zhí)行view的- (BOOL)endEditing:(BOOL)force;方法。
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent*)event{? ? [self.view endEditing:YES];//實(shí)現(xiàn)該方法是需要注意view需要是繼承UIControl而來的}
還有一些比較笨的方法也可以實(shí)現(xiàn)達(dá)到點(diǎn)擊背景后收起鍵盤的效果洒沦,比如:在背景view上面加手勢(shì)豹绪,添加UIButton或者view,然后在對(duì)應(yīng)的點(diǎn)擊事件的監(jiān)聽方法中實(shí)現(xiàn)resignFirstResponder或者endEditing申眼。
UITapGestureRecognizer*tapGestureRecognizer = [[UITapGestureRecognizeralloc] initWithTarget:selfaction:@selector(keyboardHide:)];//設(shè)置成NO表示當(dāng)前控件響應(yīng)后會(huì)傳播到其他控件上瞒津,默認(rèn)為YES。? tapGestureRecognizer.cancelsTouchesInView =NO;//將觸摸事件添加到view上[self.view addGestureRecognizer:tapGestureRecognizer];
-(void)keyboardHide:(UITapGestureRecognizer*)tap{? ? ? [textFiled resignFirstResponder];? }
3.不用view實(shí)現(xiàn)endEditing的方法
如果說在比較難獲取viewController的view時(shí)括尸,可以使用下面的方法:
[[[UIApplicationsharedApplication] keyWindow] endEditing:YES];
或者
[[UIApplicationsharedApplication] sendAction:@selector(resignFirstResponder) to:nilfrom:nilforEvent:nil];