博客地址:張飛的個(gè)人技術(shù)博客
在使用UITextField
的時(shí)候缩功,我們會和鍵盤打交道傀广,有時(shí)候要求彈出來的鍵盤類型是數(shù)字鍵盤拢驾,有時(shí)候要求我們彈出來的是一般的鍵盤铐料。當(dāng)我們輸入完成的時(shí)候噪叙,就涉及到在上什么時(shí)候收回鍵盤的事情了矮锈。收回鍵盤分下面的情況來討論。
大體來說睁蕾,收起鍵盤的方法有:
- 讓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<UITouch *> *)touches withEvent:(UIEvent *)event
方法寥枝,然后執(zhí)行view的- (BOOL)endEditing:(BOOL)force;
方法宪塔。
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
[self.view endEditing:YES]; //實(shí)現(xiàn)該方法是需要注意view需要是繼承UIControl而來的
}
還有一些比較笨的方法也可以實(shí)現(xiàn)達(dá)到點(diǎn)擊背景后收起鍵盤的效果,比如:在背景view上面加手勢脉顿,添加UIButton或者view蝌麸,然后在對應(yīng)的點(diǎn)擊事件的監(jiān)聽方法中實(shí)現(xiàn)resignFirstResponder
或者endEditing
。
UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(keyboardHide:)];
//設(shè)置成NO表示當(dāng)前控件響應(yīng)后會傳播到其他控件上艾疟,默認(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í),可以使用下面的方法:
[[[UIApplication sharedApplication] keyWindow] endEditing:YES];
或者
[[UIApplication sharedApplication] sendAction:@selector(resignFirstResponder) to:nil from:nil forEvent:nil];
結(jié)尾
在項(xiàng)目中還得根據(jù)情況選擇使用哪一種方法蔽莱,我想掌握上面的這些方法差不多就夠了弟疆,祝大家玩得愉快!如果你覺得我的文章對你有幫助盗冷,不妨任性打賞??怠苔!