2012-02-29 39 views
6

我的iPhone應用程序中的鍵盤因爲UIView即使製作控制器不可觸摸,因爲我有一個事實UITableView佔據了可用屏幕的其餘部分。當我點擊UITextField到UITableView外部時,如何resignFirstResponder

我很想知道如何通過點擊UITableView來辭去鍵盤又名firstResponder?即使不選擇可點擊的單元,是否有辦法監視UITableView上的觸摸事件。

基本上,如果單元格觸發事件,我知道如何退出鍵盤,但如果點擊UITableView的非可點擊部分,我仍然希望鍵盤消失。

回答

6

2個選擇:

  • 在你的viewController,應對錶的滾動回調辭職響應
-(void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    [self.view endEditing:YES]; 
} 
  • 您可以隨時添加一個UITapGestureRecognizer到表/視圖並從t中退出響應者這裏

就我個人而言,我通常在桌面上滾動,因爲我不喜歡一個水龍頭關閉鍵盤。

+0

謝謝你的UITapGestureRecognizer做到了我所需要的。我很欣賞時間。我相信這個卷軸也可以工作,在這種情況下,我只需要一下水龍頭,但是會在以後的庫存中保留卷軸。 – Rob 2012-02-29 18:52:20

3
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
    { 
    UITapGestureRecognizer *doubleTap = 
      [[UITapGestureRecognizer alloc] 
      initWithTarget:self 
      action:@selector(tapDetected:)]; 
      doubleTap.numberOfTapsRequired = 1; 
      [self.tableView addGestureRecognizer:doubleTap]; 
      [doubleTap release]; 

    } 

- (IBAction)tapDetected:(UIGestureRecognizer *)sender 
{ 
    CGPoint p = [sender locationInView:self.tableView]; 

    NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:p]; 

    if(indexPath == nil) 
    { 
    NSLog(@"empty"); 
    } 
    else 
    { 
    [textField resignFirstResponder]; 
    } 
} 

我認爲這將有助於...試試吧..

+1

我結束了使用滾動,因爲當我在tableview上放置一個tapgesture時,它會導致單元不再讀取水龍頭,因此單元格不會提交單元,因爲點擊手勢正在吃掉事件。不過謝謝你,我可能會在另一種情況下需要這些代碼。 – Rob 2012-03-02 15:53:46

0
@property (weak, nonatomic) UITextField *activeTextField; // keeps track of whose keyboard is being displayed. 

- (void)textFieldDidBeginEditing:(UITextField *)textField { 
    self.activeTextField = textField; 
} 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    // if (indexPath equal to something then) 
    [self.activeTextField resignFirstResponder]; 
} 
3

添加敲擊手勢識別是一個有趣的解決方案,但有一個替代,你不需要任何代碼!

您可以在Interface Builder設置屬性keyboardDismissMode爲你的表視圖「上拖辭退」。它是一個從UIScrollView繼承的屬性,每當你滾動你的表格視圖時,鍵盤都將被解除。

相關問題