天天看點

iOS: 讓鍵盤消失的的4種方法

在iOS app中,隻要用到編輯框(UITextField)的地方,就得處理鍵盤消失 (dismiss keyboard)。

我先後用過4種方法,來處理鍵盤消失的問題。

1. 通過UITextFiledDelegate,來釋放第一響應者 (resignFirstResponder); 這種通過delegate釋放鍵盤的代碼如下: 

 -(BOOL)textFieldShouldReturn:(UITextField*)textField {

 [textField resignFirstResponder];

 returnYES;

}

以下3種方法是通過 響應事件來處理的:

2. 通過 Done鍵的 DidonExit method,來 resignFirstResponder;

3.  點選編輯框的背景圖,讓鍵盤消失。 方法: 将背景view 設為: UIControll。 UIView本身不能響應事件,而UIcontroll 是可以響應事件的。 UIControll 繼承于 UIView;  通過調用 UIControll的 Touch Down 事件,讓鍵盤消失;

4. 放置一個 UIButton ,将這個UIButton 布滿全屏,當點選非編輯區域時,其實就是點選這個巨型的Button。 在這個button 事件中, resignFirstResponder 即可。  

-(IBAction)backgroundTap:(id)sender {

    [self.nameTextFieldresignFirstResponder];

  [self.passwordTextFieldresignFirstResponder];

說明:這個method 模拟了使用者的兩種行為: 

1.點選keyboard上的done鍵,讓鍵盤消失;

2.點選編輯框以外的區域,讓鍵盤消失。

特别說明一點:通過布滿全屏的Button,這種方法要求:這個巨型的Button一定要放在最底層。否則的話,編輯框将無法接受輸入的事件。

方案點評:

UITextFieldDelegate和UIControll方案,處理鍵盤消失問題,這是一種大智慧。而巨型Button和 didOnExit 方法,雖然也能用,但從軟體程式設計思想上看,隻能算是一種小聰明罷了。

小結:

隻要有輸入框存在,就得處理如何讓鍵盤消失的問題。當然,你可以僅僅處理點選“done”按鈕,來讓鍵盤消失。但為了讓使用者有更好的體驗,需要同時處理非編輯框的區域的事件響應。

下一篇: ZipArchive