以编程方式创建 UITextField 事件
Posted
技术标签:
【中文标题】以编程方式创建 UITextField 事件【英文标题】:Programmatically create UITextField events 【发布时间】:2011-02-07 02:04:20 【问题描述】:我在创建行时以编程方式将文本字段添加到 TableView 中。我正在尝试通过这样做来订阅这些 textFields 的 TouchUpInside 事件
UITextField *eTextField = [[UITextField alloc] initWithFrame:CGRectMake(110, 12, 145, 25)];
eTextField.delegate = self;
[eTextField addTarget:self action:@selector(showPicker)
forControlEvents:UIControlEventTouchUpInside];
showPicker 是一个没有参数的 IBAction。它永远不会被触发。还有什么我需要做的吗?
我有什么遗漏吗? 提前致谢
【问题讨论】:
【参考方案1】:不应该是 [eTextField addTarget:self action:@selector(showPicker*:*) 您也没有分配 UIControlEvent。
所以:
[eTextField addTarget:self action:@selector(showPicker)
应该改成
[eTextField addTarget:self action:@selector(showPicker:) forControlEvents:UIControlEventEditingDidBegin];
【讨论】:
【参考方案2】:如果您尝试为文本字段而不是键盘显示选择器,则应将选择器选择器视图指定为文本字段的inputView
。
但是如果你想在用户触摸文本字段时触发一些方法,你应该覆盖 文本字段委托方法
textFieldDidBeginEditing
并调用 resign 第一响应者以避免键盘,然后编写您的自定义代码或方法调用。
【讨论】:
我为选择器视图创建了一个带有“完成”按钮的单独视图,并为显示和隐藏设置了动画。您使用inputView
的想法似乎更简单,但我如何让 InputView(现在是 aPicker)被解雇?让它hidden = YES
让它永远消失。
当文本字段不是第一响应者时,输入视图会关闭。所以只需在完成按钮操作中的文本字段上调用“resignFirstResponder”即可。【参考方案3】:
你可以试试这个……
1.在您的viewController.m
文件中覆盖textFieldDidEndEditing
。
请看下面的示例代码:
-(BOOL)textFieldDidEndEditing:(UITextField*) tf
//your piece of code (goNext?)
2.删除
[eTextField addTarget:self action:@selector(goNext) forControlEvents:UIControlEventEventEditingDidEnd];
来自您的代码。
【讨论】:
以上是关于以编程方式创建 UITextField 事件的主要内容,如果未能解决你的问题,请参考以下文章
以编程方式创建 UILabel、UITextField 等时的图形错误
在 UITableView 重新加载时以编程方式打开/关闭 UITextField 的 inputView