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 的委托?

您好,我收到textFieldDidChange(Swift)的两个错误

iOS 监听textfield的输入(转)

如何在iOS中查找UIView子视图的值变化

ios:在其超级视图中的中心视图

IOS:在其内容中围绕 uicollectionViewCell 剪辑的角落