我创建了一个包含文本字段的自定义单元格。当用户按下完成按钮时,我希望键盘消失(如下面的屏幕截图所示)。
自定义单元格位于" AccountViewCell"。在我的代码中,我调用并显示这个自定义单元格:
- (UITableViewCell *)tableView:(UITableView *)tableView2 cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.section == 0)
{
static NSString *CellIdentifier = @"AccessCard";
static NSString *Cellnib = @"AccountViewCell";
AccountViewCell *cell = [tableView2 dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:Cellnib owner:self options:nil];
cell = (AccountViewCell *)[nib objectAtIndex:3];
}
cell.data.text = [tableData objectAtIndex:indexPath.row];
return cell;
}
if (indexPath.section == 1)
{
static NSString *CellIdentifier = @"Password";
static NSString *Cellnib = @"AccountViewCell";
AccountViewCell *cell = [tableView2 dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:Cellnib owner:self options:nil];
cell = (AccountViewCell *)[nib objectAtIndex:4];
}
cell.data.text = [tableData objectAtIndex:indexPath.row];
return cell;
}
return 0;
}
用户可以输入文字,但我似乎无法使键盘消失。
我还在AccountViewCell中创建了一个隐藏键盘的方法:
- (void)textfieldInput
{
UIToolbar* padToolBar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 320, 50)];
padToolBar.barStyle = UIBarStyleBlackTranslucent;
UIBarButtonItem *doneButton = [[UIBarButtonItem alloc]
initWithTitle:@"Done"
style:UIBarButtonItemStyleDone
target:self
action:@selector(doneWithPad)];
[doneButton setWidth:65.0f];
padToolBar.items = [NSArray arrayWithObjects:
[[UIBarButtonItem alloc]initWithTitle:@"Cancel" style:UIBarButtonItemStyleBordered target:self action:@selector(cancelPad)],
[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil],
doneButton,
nil];
[padToolBar sizeToFit];
textField.inputAccessoryView = padToolBar;
}
但是当我在cellForRowAtIndexPath中调用它时,它不起作用。
AccountViewCell* keyboard = [[AccountViewCell alloc] init];
[keyboard textfieldInput];
我想知道在按下完成键时是否有隐藏键盘的方法。我的申请截图如下:
答案 0 :(得分:1)
在完成按钮的操作方法中,使用以下一行代码:
[myTextField resignFirstResponder];
答案 1 :(得分:1)
#。h文件中的Inlucde UITextFeildDelegate
方法
提供[textfeild setDelegate:self];
[textField setReturnKeyType:UIReturnKeyDone];
包括
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
}
答案 2 :(得分:0)
您必须在头文件中添加UITextViewDelegate
,然后将文本视图的委托设置为您的委托。通常你会在同一个类文件中完成所有这些,所以你可以做到
aTextField.delegate = self;
设置委托后,您可以使用适当的委托方法:
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textView resignFirstResponder];
}
答案 3 :(得分:0)
在.xib文件中连接UITextField时,请将目标连接到DidEndOnExit。