在ios開發(fā)控件中,TextField和TextView與Label一樣,也是文本類控件,是可以編輯文本內(nèi)容的。在控件內(nèi)容編輯方面,三者都可以通過代碼、雙擊控件和屬性檢查器中的Text屬性來實現(xiàn),但是TextField和 TextView比Label多了一個鍵盤的使用。一旦TextField和TextView等控件處于編輯狀態(tài),系統(tǒng)就會智能地彈出鍵盤,而不需要做任何額外的操作。但是,關(guān)閉鍵盤就不像打開鍵盤這樣順利了,我們需要用代碼去實現(xiàn)。 那么在TextField和TextView控件中如何關(guān)閉鍵盤?下面南昌APP制作開發(fā)公司-百恒網(wǎng)絡(luò)就來為大家介紹一下:
在介紹關(guān)閉鍵盤的方法之前,我們先了解鍵盤不能自動關(guān)閉的原因。當(dāng)TextField或TextView處于編輯狀態(tài)時,這些控件變成了“第一響應(yīng)者”。要關(guān)閉鍵盤,就要放棄“第一響應(yīng)者”的身份。在iOS中,事件沿著響應(yīng)者鏈從一個響應(yīng)者傳到下一個響應(yīng)者,如果其中一個響應(yīng)者沒有對事件做出響應(yīng),那么該事件會重新向下傳遞。
顧名思義,“第一響應(yīng)者”是響應(yīng)者鏈中的第一個,不同的控件成為“第一響應(yīng)者”之后的“表現(xiàn)”不太一致。TextField和TextView等輸入類型的控件會出現(xiàn)鍵盤,而我們只有讓這些控件放棄它們的“第一響應(yīng)者”身份, 鍵盤才會關(guān)閉。
要想放棄“第一響應(yīng)者”身份,需要調(diào)用UIResponder類中的resignFirstResponder方法,此方法一般在點擊 鍵盤的return鍵或者是背景視圖時觸發(fā),百恒網(wǎng)絡(luò)為大家介紹一個采用點擊return鍵關(guān)閉鍵盤的方式。要實現(xiàn)這個操作,可以利用 TextField和TextView的委托協(xié)議實現(xiàn)。相關(guān)的實現(xiàn)代碼是在ViewController文件中,具體如下所示:
class ViewController: UIViewController, UITextFieldDelegate, UITextViewDelegate {
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
//通過委托實現(xiàn)放棄第一響應(yīng)者
//UITextField委托方法
func textFieldShouldReturn(textField: UITextField) -> Bool { textField.resignFirstResponder() ①
return true
}
/通過委托實現(xiàn)放棄第一響應(yīng)者
//UITextView委托方法
func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool {
if (text == "n") {
textView.resignFirstResponder()
return false
}
return true
}
}
@implementation ViewController
//通過委托來放棄“第一響應(yīng)者”
#pragma mark - UITextField Delegate Method
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder]; ①
return YES;
}
//通過委托來放棄“第一響應(yīng)者”
#pragma mark - UITextView Delegate Method
-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:
(NSRange)range replacementText:(NSString *)text
{
if([text isEqualToString:@"n"]) {
[textView resignFirstResponder];
return NO;
}
return YES;
}
@end
在上述代碼中,textFieldShouldReturn:方法是UITextFieldDelegate委托協(xié)議中定義的方法,在用戶點擊鍵 盤時調(diào)用,第①行代碼用于關(guān)閉鍵盤。與此類似,textView:shouldChangeTextInRange:replacementText:是由 UITextViewDelegate委托協(xié)議提供的方法,它也是在用戶點擊鍵盤時被調(diào)用。
另外,如果界面中有很多控件,或者控件的位置比較靠近屏幕下方,控件就很可能會被彈出的鍵盤擋住,此時可以添加UIScrollView控件來解決。
關(guān)于在TextField和TextView控件中關(guān)閉鍵盤的方法就已經(jīng)講完了,如果大家還有哪些不太明白的地方可隨時來電和我們聯(lián)系,百恒專業(yè)為您講解。此外,本公司專業(yè)為您提供南昌APP開發(fā)、網(wǎng)站設(shè)計、微信開發(fā)、網(wǎng)站推廣等服務(wù),如有需要,歡迎大家來電咨詢,洽談合作!