2013-07-16 139 views
0

我想,當用戶點擊的TableViewCell.m爲UITextFieldIOS檢測觸摸關閉鍵盤?

外弄清楚如何消除鍵盤和觸發方法:

-(void)textFieldDidBeginEditing:(UITextField *)textField 
{ 
    [self.delegate cellDidBeginEditing:self]; 
} 

在ViewController.m:

-(void)cellDidBeginEditing:(TableViewCell *)editingCell 
{ 
_editingOffset = _tableView.scrollView.contentOffset.y - editingCell.frame.origin.y; 
for (TableViewCell *cell in [_tableView visibleCells]) { 
    [UIView animateWithDuration:0.3 
        animations:^{ 
         cell.frame = CGRectOffset(cell.frame, 0, _editingOffset); 
         if (cell != editingCell) { 
          cell.alpha = 0.25; 

         } 
        }]; 
    } 
} 

cellDidBeginEditing:方法將單元格替換爲頂部並使其他單元格變成灰色。

我有另一種方法,cellDidEndEditing:它做了與此相反的,並且代碼是不是真的需要。

截至目前,選擇,例如,「小區2」編輯「小區1」時,只是觸發cellDidBeginEditing爲「小區2」

我想鍵盤解僱和cellDidEndEditing觸發,當我點擊「小區1」之外

+0

的可能重複(http://stackoverflow.com/questions/5306240/iphone-dismiss-keyboard-when-touching-outside-of-textfield)[iphone,觸摸文本域之外時關閉鍵盤] –

回答

1

嘗試實現和調用這些函數:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    NSLog(@"touchesBegan:withEvent"); 
    [self.view endEditing:YES]; 
    [super touchesBegan:touches withEvent:event]; 
} 

- (BOOL)textFieldShouldReturn:(UITextField *)textField 
{ 
    [self.firstTextField resignFirstResponder]; 
    [self.secondTextField resignFirstResponder]; 
    return YES; 
} 

這應該讓這個當你觸摸任何地方兩個文本框之外,鍵盤自動解散。

+0

我把在ViewController.m中的第一個方法,它沒有做任何事情。並且我沒有「firstTextField」和「secondTextField」作爲TableViewCell下的對象。 我在想UITapGesture,但可以使用指導。 – Brian

+0

@Brian發佈了一些更多的代碼,顯示你的.m文件夾中的文本字段的位置。 'resignFirstResponder'是什麼應該關閉鍵盤。如果你想使用觸摸手勢,你可以使用'[self.view endEditing:YES];'當你觸摸。 – CaptJak

+0

' - (BOOL)textFieldShouldReturn:(UITextField *)textField { [textField resignFirstResponder]; return NO; }' – Brian