KVI*_*ISH 0 uitextfield ios uitextfielddelegate
我有以下代码:
@interface MyCell : UITableViewCell<UITextFieldDelegate>
{
IBOutlet UITextField *txtFields;
}
- (IBAction)textFieldAction:(id)sender;
@property (nonatomic,retain) IBOutlet UITextField *txtFields;
@end
Run Code Online (Sandbox Code Playgroud)
我还有以下委托功能:
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
return NO;
}
Run Code Online (Sandbox Code Playgroud)
但是,我注意到它永远不会被召唤.我从接口构建器以及代码中设置委托:[txtFields setDelegate:self];但似乎都不起作用.我还缺少其他的东西吗?
你显然将它与a结合使用UITableView.首先,如果要支持用户交互,txtFields必须是单元格的子视图contentView,而不是backgroundView.
假设txtFields对象是其子视图contentView,那么让我们看一下连接.
tableView有一个方法cellForRowAtIndexPath:,您可以返回新单元格或循环单元格.在该单元格的最底部,添加:
NSLog(@"textFields=%@ delegate=%@", cell.txtFields, cell.txtFields.delegate);
assert(cell.txtFields.delegate == cell); // lets make sure this is proper
Run Code Online (Sandbox Code Playgroud)
如果实际上两个参数都在那里,你现在知道txtFields对象在适当的容器(contentView)中,属性正在工作,并且委托被设置为单元格.
如果这一切都是正确的,而你在点击时没有拿到键盘,那么很可能是其他东西覆盖了txtFields - 其他一些透明视图并且它正在吃掉触摸.
在这种情况下,您应该使用MyCell类将一个小的演示应用程序放在一起,甚至只有一个硬编码的单元格来演示问题,然后将其(压缩)上传到您的DropBox帐户,像我这样的其他人可以查看它并查找问题.
| 归档时间: |
|
| 查看次数: |
1725 次 |
| 最近记录: |