2015-09-26 87 views
0

我有一些UITextFields可以打開鍵盤。檢測UITextField上的觸摸NOT(使鍵盤隱藏)

我的問題是,我怎麼可以檢測屏幕上的觸摸,是不是在什麼,我需要任何的UITextField

僞代碼:

if(screen is touched) 
    if(touched view is NOT a UITextField) 
     [self.view endEditing:YES]; 

是否有一個簡單的方法來做到這一點?或者當UITextField沒有被觸摸時,隱藏鍵盤的另一種更簡單的方法是什麼?

謝謝!

回答

2

只需添加UITapGestureRecognizer到您的視圖,並使用[self.view endEditing:YES];

- (void)addTapGesutre { 
    UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self 
                      action:@selector(handleTapGesture:)]; 
    tapGesture.numberOfTapsRequired = 1; 
    [self.view addGestureRecognizer:tapGesture]; 
} 

- (void)handleTapGesture:(UITapGestureRecognizer *)tap { 
    if (tap.state == UIGestureRecognizerStateEnded) { 
     [self keyboardDismiss]; 
    } 
} 

- (void)keyboardDismiss { 
    [self.view endEditing:YES]; 
} 
+0

謝謝,這可行,但它不適用於已經檢測到水龍頭(即按鈕)的視圖。對於這些,我只是將'[self keyboardDismiss]'添加到他們的IBActions中。 – user1282637

0

您實際上可以使用觸摸開始方法。

看看文檔here

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 
    view.endEditing(true) 
} 

從文檔 -

如果覆蓋沒有調用超極本的方法(共同使用 模式),您還必須重寫處理觸摸 事件的其他方法,如果只爲存根(空)實現。

+0

僅供參考 - 問題是標籤的Objective-C。答案應以適當的語言發佈。 – rmaddy