无法让键盘在UITableViewCell中与UITextView一致地重新签名

时间:2009-12-05 16:04:25

标签: iphone uitableview uitextview

我在UITableView单元格中有一个UITextView。编辑后,我无法让键盘始终如一地辞职。检测DidEndEditing无效。将我自己的“完成”按钮添加到工具栏会带来间歇性结果。建议吗? (注意:这是UITextView而不是UITextField。谢谢)

2 个答案:

答案 0 :(得分:0)

完成编辑后,您是否关闭了表格视图的控制器?我遇到了一个非确定性的崩溃,当执行[textView resignFirstResponder]加上一个调用(类似[self doneClicked:nil])会解除托管UITableView的视图控制器时发生。

它将释放UITextView,当调用返回到发起didEndEditing调用的UITextView方法时,它会崩溃或行为不一致(因为视图已被释放)..

解决方案是在延迟一段时间后调用所有内容:

[self performSelector:@selector(doneClicked:) withObject:nil afterDelay:0.5]

答案 1 :(得分:0)

将textview添加到单元格中:

cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];

if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyIdentifier] autorelease];
}
managedTextView = [[[UITextView alloc] initWithFrame:CGRectMake(7,8,260, 30)] autorelease];
managedTextView.delegate = self;
managedTextView.scrollEnabled = YES;
managedTextView.autoresizingMask = UIViewAutoresizingFlexibleHeight;
managedTextView.text=thought.managedthought;
[cell.contentView addSubview: managedTextView];
cell.accessoryType = UITableViewCellAccessoryNone;

完成按钮代码:

- (void)saveTextView:(id)sender
{
    [managedTextView resignFirstResponder];
    UIBarButtonItem *saveButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSave target:self action:@selector(save:)];
    self.navigationItem.rightBarButtonItem = saveButton;
    [saveButton release];
...
}

(保存整个UITableViewController时使用“new”保存按钮)