IOS textFieldDidChange 在其他类中的出口时
Posted
技术标签:
【中文标题】IOS textFieldDidChange 在其他类中的出口时【英文标题】:IOS textFieldDidChange when outlet in other class 【发布时间】:2012-02-14 15:09:45 【问题描述】:在访问不同班级的插座时,我遇到了一个特定的 ios 问题。
在我的项目中,我有一个带有自定义 tableViewCells 的 UItableView,它是我使用界面生成器创建的。这些单元格上有 UItextfields,我需要知道某个文本字段的值何时更改。 (所以我可以添加一个带有文本字段的新空单元格,就像在您的通讯录中一样)我遇到了以下功能
[UITextfield addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
问题是当文本字段的出口在子类(特定的tableViewCell类)中时,我在主类中使用了这个函数。
我创建了一个插座方法,以便我可以在主类中访问它。但是还是上面的代码没有触发 textFieldDidChange 事件。
希望有人可以帮助我解决这个问题。或者给我一个不同的解决方案来实现我的目标(在将第一个字符添加到当前 UITextfield 时创建一个新的空文本字段)。
谢谢
【问题讨论】:
【参考方案1】:textFieldDidChange 不起作用。好吧,我遇到了很多问题。 我不知道它是否已被弃用或什么。 无论哪种方式,只要委派正确,您都可以使用 shouldChangeCharacterInRange 几乎相同的方式。
但是您必须对其进行一些修改,因为该方法是在您实际输入内容之前触发的。所以你必须自己获取新值并添加它。
- (BOOL) textField:(UITextField *)aTextField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
// Check the replacementString
return YES;
【讨论】:
非常感谢mutch,它成功了!还有另一个问题。重新加载 UiTableview 或使用 reloadSections 功能时,键盘会隐藏。但我需要它保持可见。无法弄清楚如何解决此问题.. 如果我的答案现在有效,我认为您应该让我的答案正确或至少赞成 =) 尝试 [yourTextField becomeFirstResponder];如果设置了响应器,您的键盘应该保持不变。要降低它,您可以使用 [yourTextField resignFirstResponder]; 嘿 Frederik,对不起,*** 的全新产品所以不知道...但我检查了它=)(抱歉,由于我的声誉,无法投票)。 becomeFirstResponder 的事情也有效 =D。非常感谢您的帮助,您让我重回正轨!以上是关于IOS textFieldDidChange 在其他类中的出口时的主要内容,如果未能解决你的问题,请参考以下文章
textFieldDidChange 和 shouldChangeCharactersIn 方法的主要区别是啥,UITextFieldDelegate 的委托?