0

我想知道如何处理 UITextField 中的关闭键盘,当我通过 Outlets 执行此操作时,我知道该怎么做,但现在我在这样的代码中声明我的文本字段:

(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"];
}

cell.accessoryType = UITableViewCellAccessoryNone;

UITextField *playerTextField = [[UITextField alloc] initWithFrame:CGRectMake(10, 10, 185, 30)];
playerTextField.adjustsFontSizeToFitWidth = YES;
playerTextField.textColor = [UIColor blackColor];
if([indexPath row] == 0) {
    playerTextField.placeholder = @"Server Address";
    playerTextField.keyboardType = UIKeyboardTypeDefault;
    playerTextField.returnKeyType = UIReturnKeyDone;
} else if([indexPath row] == 1){
    playerTextField.placeholder = @"Server Port";
    playerTextField.keyboardType = UIKeyboardTypeDecimalPad;
    playerTextField.returnKeyType = UIReturnKeyDone;
} else {
    playerTextField.placeholder = @"Password";
    playerTextField.keyboardType = UIKeyboardTypeDefault;
    playerTextField.returnKeyType = UIReturnKeyDone;
    playerTextField.secureTextEntry = YES;
}

playerTextField.backgroundColor = [UIColor clearColor];
playerTextField.autocorrectionType = UITextAutocorrectionTypeNo;
playerTextField.autocapitalizationType = UITextAutocapitalizationTypeNone;
playerTextField.textAlignment = UITextAlignmentLeft;
playerTextField.tag = 0;

playerTextField.clearButtonMode = UITextFieldViewModeNever;
[playerTextField setEnabled: YES];

[cell.contentView addSubview:playerTextField];


return cell;
}

我将如何管理?

4

2 回答 2

2

因为您的文本字段位于单元格内,所以您需要标记它,您已经是,但是我建议使用不同于0. 然后每当您需要辞职时(假设您知道要查找哪个单元格):

    UITextField *myField = [tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:myRow inSection:mySection]].contentView viewWithTag:myTag];
    [myField resignFirstResponder];

如果您不知道它是哪个单元格,那么您需要遍历所有单元格。

希望这可以帮助

于 2013-02-01T22:19:31.163 回答
0

似乎您有很多文本字段,每个单元格中都有一个?

您需要添加属性@property (strong, nonatomic) UITextField *currentTextField

在您的 textField 创建方法中,您需要将表视图控制器设置为文本字段委托:

playerTextField.delegate = self;

然后你必须让你的 tableViewController 实现 UITextFieldDelegate 协议(<UITextFieldDelegate>在你的头文件中添加你的类名),然后为这个方法添加实现:

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

这意味着当其中一个 textFields 开始编辑时,它会被跟踪。

可能你有事件或按钮会调用类似(void)save动作的东西。添加到它的实现:

- (void)save {
     [self.currentTextField resignFirstResponder];
}

您还可以跟踪 textField 何时完成编辑:(void)textFieldDidEndEditing:(UITextField *)textField

于 2013-02-01T22:18:56.153 回答