我如何关闭键盘UITextField

时间:2013-02-01 21:40:26

标签: objective-c

我想知道如何在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;
}

我将如何管理?

2 个答案:

答案 0 :(得分:2)

由于您的文本字段位于单元格内,因此您需要对其进行标记,但是我建议您使用与0不同的内容。然后每当你需要重新签名时(假设你知道要查找哪个单元格):

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

如果你不知道它是哪个细胞那么你需要遍历所有细胞。

希望这会有所帮助

答案 1 :(得分:0)

似乎你有很多textFields,每个单元格一个?

您需要添加属性@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