相关疑难解决方法(0)

UITextView上的becomeFirstResponder无法正常工作

出于某种原因,我在将文本字段作为第一响应者时遇到了麻烦.

我有一个UITableView有两行.每行都有一个标签和一个UITextField.文本字段标记为kLoginRowIndex = 0和kPasswordRowIndex = 1.正如您可能已经猜到的那样,我使用它来设置登录名和密码.

如果用户在编辑登录文本字段时点击返回按钮,我希望密码文本字段获得焦点.不幸的是,密码文本字段不接受焦点.这是我的代码:

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    NSLog(@"%s:(textField.tag:%d)", __FUNCTION__, textField.tag);
    [textField resignFirstResponder];
    if(textField.tag == kLoginRowIndex) {
        UITableViewCell *cell = [self tableView:self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:kPasswordRowIndex inSection:0]];
        UITextField *nextTextField = (UITextField *)[cell viewWithTag:kPasswordRowIndex];
        NSLog(@"(nextTextField.tag:%d)", nextTextField.tag);
        NSLog(@"canBecomeFirstResponder returned %d", [nextTextField canBecomeFirstResponder]);
        NSLog(@"becomeFirstResponder returned %d", [nextTextField becomeFirstResponder]);
    } else {
        [self validate:textField];
    }
    return NO;
}
Run Code Online (Sandbox Code Playgroud)

这是日志输出:

-[SettingsViewController textFieldShouldReturn:]:(textField.tag:0)
(nextTextField.tag:1)
canBecomeFirstResponder returned 1
becomeFirstResponder returned 0

我尝试了什么:

  • 返回YES而不是NO
  • 删除对canBecomeFirstResponder的调用(仅用于调试目的)

任何提示都表示赞赏!

iphone uitextfield uikit

3
推荐指数
1
解决办法
8480
查看次数

标签 统计

iphone ×1

uikit ×1

uitextfield ×1