我想知道如何在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;
}
我将如何管理?
答案 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