轉:iPhone關閉鍵盤方法

關於隱藏軟鍵盤,網上的辦法參差不齊,大可能是經過實現UITextFieldDelegate來隱藏軟鍵盤,該方法代碼較多,且在文本框不少的時很差處理。我通過搜索與摸索,找到了最佳的處理辦法。ide

1、隱藏自身軟鍵盤

  當對於有多個UITextField控件都想經過點擊「Return」來隱藏自身軟鍵盤的狀況,這時的最好辦法是使用Did End on Exit事件。在點擊軟鍵盤右下角的「Return」按鈕後,會觸發該事件。
  該事件有一個sender參數表示當前文本框,這樣即可以編寫一個通用的事件處理方法(.m文件)——spa

- (IBAction)TextField_DidEndOnExit:(id)sender {
    // 隱藏鍵盤.
    [sender resignFirstResponder];
}

 

  而後在.h文件中填寫該方法的聲明——code

- (IBAction)TextField_DidEndOnExit:(id)sender;

 

  回到storyboard,並按command+option+enter打開輔助窗口,使輔助窗口顯示.h文件。
  選中一個UITextField控件,點擊鼠標右鍵彈出面板,鼠標左鍵按住Did End on Exit事件旁邊的圓圈,而後拖曳到右側.h文件的TextField_DidEndOnExit方法上,便會創建好事件鏈接。
  隨後按照一樣的作法,將其餘UITextField控件的Did End on Exit事件也鏈接到TextField_DidEndOnExit方法。blog

  運行一下,可發現每一個文本框的軟鍵盤均可以經過點擊「Return」來隱藏了。事件


2、點擊Return自動轉到下個文本框

  當頁面中有不少個文本框時,若是每次都須要點文本框激活軟鍵盤、輸入後點擊Return隱藏軟鍵盤、再點擊下一個文本框……這樣操做起來太繁瑣了。
  因而咱們但願可以實現點擊Return時可以自動轉到下一個文本框。尤爲是對於最後一個文本框,但願可以在點擊Return時執行下一步操做。it

  例如對於登陸頁面。它上面有 帳號文本框(nameTextField)、密碼文本框(passTextField)、登陸按鈕(loginButton)。
  咱們但願——點擊帳號文本框軟鍵盤的Return時跳轉到密碼文本框,點擊密碼文本框軟鍵盤的Return時執行登陸。
  由於這兩個文本框的功能不一樣,不能像上一節那樣寫一個TextField_DidEndOnExit作統一處理,而應該分別創建各自的事件處理方法。io

  回到storyboard,右擊帳號文本框(nameTextField)彈出面板,按住Did End on Exit事件旁邊的圓圈,而後拖曳到右側.h文件的空白地方,此時會彈出一個對話框給方法命名。輸入名稱(nameTextField_DidEndOnExit)後回車肯定,便自動生成了該事件方法。
  隨後按照一樣的作法,爲密碼文本框(passTextField)的Did End on Exit事件鏈接方法(passTextField_DidEndOnExit)。
  來到.m文件,填寫具體代碼——class

複製代碼
- (IBAction)nameTextField_DidEndOnExit:(id)sender {
    // 將焦點移至下一個文本框.
    [self.passTextField becomeFirstResponder];
}

- (IBAction)passTextField_DidEndOnExit:(id)sender {
    // 隱藏鍵盤.
    [sender resignFirstResponder];
    // 觸發登錄按鈕的點擊事件.
    [self.loginButton sendActionsForControlEvents:UIControlEventTouchUpInside];
}
複製代碼

 

  對於帳號文本框轉密碼文本框,不須要隱藏軟鍵盤,只須要調用becomeFirstResponder激活新的文本框就好了。
  對於密碼文本框Return後執行登陸。由於再也不須要顯示軟鍵盤,因此仍是得調用resignFirstResponder隱藏軟鍵盤,而後觸發登陸按鈕(loginButton)的UIControlEventTouchUpInside事件進行登陸。登錄

  運行一下,可發現已經達到咱們但願的效果了。點擊帳號文本框軟鍵盤的Return時跳轉到密碼文本框,點擊密碼文本框軟鍵盤的Return時執行登陸。
  怎麼都是「Return」,轉換文本框與執行登陸明明是不一樣的功能?
  因而將帳號文本框的Return Key屬性設爲「Next」,將密碼文本框的Return Key屬性設爲「Done」,使界面與功能一致。select


3、輕觸背景隱藏軟鍵盤

  只能經過Return關閉軟鍵盤太不靈活了,應該提供輕觸背景隱藏軟鍵盤的功能。

  在storyboard,點擊背景View,將它的Custom Class設置爲UIControl,這樣纔會出現Touch Down事件。
  右擊背景View彈出面板,按住Touch Down事件旁邊的圓圈,而後拖曳到右側.h文件的空白地方創建該事件的處理方法。
  來到.m文件,填寫具體代碼——

- (IBAction)View_TouchDown:(id)sender {
    // 發送resignFirstResponder.
    [[UIApplication sharedApplication] sendAction:@selector(resignFirstResponder) to:nil from:nil forEvent:nil];
}
相關文章
相關標籤/搜索