ios - UITextField 代表不工作

标签 ios uitextfield uitextfielddelegate

我有以下代码:

@interface MyCell : UITableViewCell<UITextFieldDelegate>
{
    IBOutlet UITextField *txtFields;
}

- (IBAction)textFieldAction:(id)sender;
@property (nonatomic,retain) IBOutlet UITextField *txtFields;

@end

我还有以下委托(delegate)函数:

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
    return NO;
}

但是,我注意到它从未被调用过。我根据以下代码从界面构建器和代码中设置委托(delegate):[txtFields setDelegate:self]; 但似乎都不起作用。我还缺少其他东西吗?

最佳答案

您显然将其与 UITableView 结合使用。首先,如果你想支持用户交互,txtFields 必须是单元格 contentView 的 subview ,而不是 backgroundView。

假设 txtFields 对象是 contentView 的 subview ,那么让我们看看连接。

tableView 有一个方法 cellForRowAtIndexPath:,您可以在其中返回一个新的单元格或一个回收的单元格。在该单元格的最底部,添加:

NSLog(@"textFields=%@ delegate=%@", cell.txtFields, cell.txtFields.delegate);
assert(cell.txtFields.delegate == cell); // lets make sure this is proper

如果实际上两个参数都存在,您现在就知道 txtFields 对象位于正确的容器 (contentView) 中,该属性正在工作,并且委托(delegate)已设置为单元格。

如果这一切正常并且您在点击时没有得到键盘,那么很可能是其他东西覆盖了 txtFields - 一些其他透明 View 和它的触摸。

在那种情况下,您应该使用 MyCell 类拼凑一个小演示应用程序,即使只有一个硬编码单元格也能演示问题,然后将其上传(压缩)到您的 DropBox 帐户,其他像我这样的人可以查看它并找到问题。

关于ios - UITextField 代表不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12394840/

相关文章:

ios - 由于未捕获的异常 'NSInvalidArgumentException',我的 Xcode 应用程序在尝试实现 NSFetchedResultsController 后崩溃

android - 最佳实践讨论 : When to favor a webview over a native UI in titanium?

ios - 类型为 'required' 的委托(delegate)

ios - 限制 Swift 2 中多个 UITextField 的长度

swift - 格式倒计时从总秒数到分秒数

objective-c - iOS、iSGL3D 和立方体

swift - 如何将 subview 添加到 UITableViewCell

ios - 如何强制文本字段开始编辑?

ios - UIAlertController 实用程序类无法调用 UITextField 委托(delegate)或目标,但可以在 UIViewController 中工作

ios - 以编程方式设置文本时,不会触发 UITextField 委托(delegate)方法