轉載自Linux公社:http://www.linuxidc.com/Linux/2013-02/78867.htm
第一種方法
使用它的委托UITextFieldDelegate中的方法textFieldShouldReturn:來關閉虛拟鍵盤。
在UITextField視圖對象如birdNameInput所在的類中實作這個方法。
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
if ((textField == self.birdNameInput) || (textField == self.locationInput)) {
[textField resignFirstResponder];
}
return YES;
}
這樣,在輸入框birdNameInput中打開虛拟鍵盤後,輕擊鍵盤的return鍵就會自動關閉掉虛拟鍵盤。
第二種方法
将birdNameInput的屬性中Return Key修改為done,再定義一個方法和Done鍵的Did End On Exit連接配接。通過輕擊done鍵觸發這個事件來關閉虛拟鍵盤。
定義的方法如下:
- (IBAction) textFieldDoneEditing:(id)sender
{
[sender resignFirstResponder];
}
這兩個方法都是輕擊虛拟鍵盤上一個鍵來關閉它。這屬于精确操作,而手指不像滑鼠,做這種操作不容易。是以就UI層面而言,這兩個方法都不是最好的方法。
在iphone或ipad螢幕上,虛拟鍵盤占用的面積大小是有限的。通過輕擊虛拟鍵盤之外的區域而關閉虛拟鍵盤。
第三種方法
通過輕擊鍵盤之外的空白區域關閉虛拟鍵盤。
在birdNameInput所屬的視圖控制器類的viewDidLoad方法中定義一個UITapGestureRecognizer的對象,然後将它指派為它的視圖。
UITapGestureRecognizer *tap =
[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissKeyboard)];
[self.view addGestureRecognizer:tap];
[tap release];
再定義一下選擇器調用的方法dismissKeyboard。
-(void)dismissKeyboard {
[birdNameInput resignFirstResponder];
}
如果螢幕上有多個textField的話,一個一個地列出來就有些麻煩。那麼将方法修改一下,如下:
-(void)dismissKeyboard {
NSArray *subviews = [self.view subviews];
for (id objInput in subviews) {
if ([objInput isKindOfClass:[UITextField class]]) {
UITextField *theTextField = objInput;
if ([objInput isFirstResponder]) {
[theTextField resignFirstResponder];
}
}
}
}