在 iOS 程式中當想要在文字框中輸入資料,輕觸文字框會開啟鍵盤。對於 iPad 程式,其鍵盤有一個按鈕可以用來關閉鍵盤,但是 iPhone 程式中的鍵盤卻沒有這樣的按鈕,不過我們可以採取一些方法關閉它。例如,我們可以實現按下 Rerun (有時也是 Done、Research 等)鍵關閉鍵盤,或者,更人性化的,輕觸背景關閉鍵盤。
1、首先講一下按下Return鍵關閉鍵盤。
當按下鍵盤的 Return 鍵,會產生一個 Did End On Exit 事件,此時,我們告訴文字框要放棄控制項,於是鍵盤就消失了。
假設,我們已經建立了一個 Single View Application ,並開啟 ViewController.xib 檔案,在 View 上拖上去了三個 Text Field ,然後,我們把這三個文字框映射到 ViewController.h 中,名稱依次是 firstField、secondField 以及 thirdField 。如:
在這個基礎上,實現輕觸 Return 關閉鍵盤,步驟為:
(1)在 ViewController.h 中聲明一個方法:
- (IBAction)textFiledReturnEditing:(id)sender;
(2)在 ViewController.m 中實現這個方法:
-(IBAction)textFiledReturnEditing:(id)sender { [sender resignFirstResponder];}
所謂 First Responder 指的就是使用者當前正在與之互動的控制項。當使用者使用鍵盤時,First Responder 就是這個鍵盤,resignFirstResponder 方法,顧名思義,就是放棄 First Responder 。
(3)讓這三個文字框都映射到 textFiledReturnEditing 方法,不過此時的事件應當是 Did End On Exit ,具體操作是:
開啟 Assistant Editor ,左邊開啟 ViewController.xib ,右邊開啟 ViewController.h ,在 Xcode 最右邊開啟 Connector Inspector ,然後在 View 中選擇第一個文字框,在 Connector Inspector 中找到 Did End On Exit ,從它右邊的圓圈中拉出映射線,映射到 ViewController.h 的 textFiledReturnEditing 方法,如:
給其他兩個文字框進行同樣的操作。現在,已經實現了輕觸 Return 鍵關閉鍵盤。
2、下面介紹更人性化的方法,輕觸背景關閉鍵盤。
跟上面的步驟差不多,首先定義一個方法,然後實現這個方法,接下來將指定的控制項映射到這個方法,並選擇好所觸發的事件。不同的是,這次我們要選擇的控制項不是上邊的文字框,而是視圖 View 本身。
(1)在 ViewController.h 檔案中添加方法聲明代碼:
- (IBAction)backgroundTap:(id)sender;
(2)在ViewController.m中實現這個方法:
- (IBAction)backgroundTap:(id)sender { [firstField resignFirstResponder]; [secondField resignFirstResponder]; [thirdField resignFirstResponder];}
需要說明的是,[firstField resignFirstResponder];表示,如果firstField有FirstResponder的話就放棄它,我們不用先判斷firstField是否有,這條語句完全正確。
(3)讓 View 映射到這個方法,不過事先,我們先要改變 View 的類型。
開啟xib,選中 View ,開啟 Identity Inspector ,在 class 中選擇 UIControl :
(4)開啟Assistant Editor ,左邊開啟 ViewController.xib ,右邊開啟 ViewController.h ,在Xcode最右邊開啟 Connector Inspector ,在 ViewController.xib 中選擇 Control ,在 Connector Inspector 中找到 Touch Down ,從它右邊的圓圈中拉出映射線,映射到 ViewController.h 的 backgroundTap 方法,如:
好了,可以運行下看看效果了:
開啟鍵盤之後,在背景地區點擊一下,鍵盤就會向下收合來。