2015-11-13 107 views
1

我知道有一些关于这一主题的堆栈溢出的问题,但我一直没能找到答案我的具体问题。我有一个UITableView与多个部分。每个单元格都有一个给定标签的UITextField。在我的textFieldShouldReturn函数中,我有一个switch语句,它根据它的标签调用下一个单元格的textField成为第一个响应者。的UITableView不滚动的becomeFirstResponder

- (BOOL)textFieldShouldReturn:(UITextField *)textField { 

switch (textField.tag) { 
    case FIRST_NAME_FIELD_TAG: 
     [_catv.lastNameTextField becomeFirstResponder]; 
     break; 
    case LAST_NAME_FIELD_TAG: 
     [_catv.emailTextField becomeFirstResponder]; 
     break; 
    case EMAIL_FIELD_TAG: 
     [_catv.passwordTextField becomeFirstResponder]; 
     break; 
    case PASSWORD_FIELD_TAG: 
     [_catv.phoneNumberTextField becomeFirstResponder]; 
     break; 
    case PHONE_NUMBER_FIELD_TAG: 
     [_catv.phoneNumberTextField resignFirstResponder]; 
     [self createAccount]; 
     break; 
    default: 
     break; 
} 
return NO; 

}

一切完美,直到我得到的地步细胞是键盘(不可见)的下方。然后,回报似乎没有做任何事情,尽管它被调用。如果我手动滚动到下一个单元格,那么单元格才会成为第一个响应者。我希望单元格可以自动滚动到键盘上方。我认为这个问题可能是每个部分开头处的分隔标题视图,但我无法分辨。任何见解都会非常有帮助。

回答

1

可能不是最佳的解决方案,但由于继承的UITableView UIScrollView的,你有没有考虑编程滚动到相应的单元格,然后指定应答?

也许尝试:

[_tableView scrollRectToVisible:CGRectMake(X,Y,WIDTH,HEIGHT) 
          animated:YES]; 
+0

我结束了scrollToRowAtIndexPath去,获得该文本字段是细胞的indexPath但其同样的想法。 – Matt