天天看點

IOS關閉虛拟鍵盤的幾種方法

轉載自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];
            }
        }
    }
}
           
上一篇: SNA是什麼