iOS中收起鍵盤的幾種方式

博客地址:張飛的個人技術(shù)博客

在使用UITextField的時候,我們會和鍵盤打交道,有時候要求彈出來的鍵盤類型是數(shù)字鍵盤,有時候要求我們彈出來的是一般的鍵盤。當(dāng)我們輸入完成的時候,就涉及到在上什么時候收回鍵盤的事情了。收回鍵盤分下面的情況來討論。

大體來說,收起鍵盤的方法有:

  • 讓textFiled放棄成為第一響應(yīng)者(resignFirstResponder)
  • 讓view或者子view強制結(jié)束編輯狀態(tài)(endEditing)

1.輸入完以后用戶點擊return后收起鍵盤。

可以點擊return收起鍵盤并不意味著彈出來的鍵盤一定都有return這個按鍵,比如數(shù)字鍵盤類型就沒有,UIKeyboardTypeWebSearch類型的鍵盤return鍵就變成了Go鍵,需要注意的是這時候的Go鍵相當(dāng)于return鍵。

要想實現(xiàn)點擊return讓鍵盤收起,首先需要設(shè)置textField代理,當(dāng)然還有遵循UITextFieldDelegate協(xié)議:

_textField.delegate = self;

然后實現(xiàn)協(xié)議方法- (BOOL)textFieldShouldReturn:(UITextField *)textField;,當(dāng)然你也可以在這個方法里 main實現(xiàn)一些需求邏輯,比如判斷輸入的內(nèi)容符不符合要求等。

- (BOOL)textFieldShouldReturn:(UITextField *)textField{
    return [textField resignFirstResponder];
}

2.點擊背景后收起鍵盤

點擊背景收起鍵盤可以實現(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]; //實現(xiàn)該方法是需要注意view需要是繼承UIControl而來的
}

還有一些比較笨的方法也可以實現(xiàn)達到點擊背景后收起鍵盤的效果,比如:在背景view上面加手勢,添加UIButton或者view,然后在對應(yīng)的點擊事件的監(jiān)聽方法中實現(xiàn)resignFirstResponder或者endEditing。

UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(keyboardHide:)];  
//設(shè)置成NO表示當(dāng)前控件響應(yīng)后會傳播到其他控件上,默認為YES。  
tapGestureRecognizer.cancelsTouchesInView = NO;  
//將觸摸事件添加到view上
[self.view addGestureRecognizer:tapGestureRecognizer];   
-(void)keyboardHide:(UITapGestureRecognizer*)tap{  
    [textFiled resignFirstResponder];  
} 

3.不用view實現(xiàn)endEditing的方法

如果說在比較難獲取viewController的view時,可以使用下面的方法:

[[[UIApplication sharedApplication] keyWindow] endEditing:YES];

或者

[[UIApplication sharedApplication] sendAction:@selector(resignFirstResponder) to:nil from:nil forEvent:nil];

結(jié)尾

在項目中還得根據(jù)情況選擇使用哪一種方法,我想掌握上面的這些方法差不多就夠了,祝大家玩得愉快!如果你覺得我的文章對你有幫助,不妨任性打賞??!


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容