UITextField valueDidChange-事件
Posted
技术标签:
【中文标题】UITextField valueDidChange-事件【英文标题】:UITextField valueDidChange-Event 【发布时间】:2010-04-04 14:33:51 【问题描述】:有没有办法捕捉文本字段的“valueDidChange”事件? oO
我有一个带有 UITextField 的 modalView。
当 UITextField 为空时,应禁用 NavigationBar 中的“完成”按钮 当有文本输入时,它应该会被启用。
目前唯一的方法是使用“textFieldShouldReturn”方法来实现。 这行得通,但对可用性来说太糟糕了。
有没有办法在每次输入或删除字母时检查要求?
【问题讨论】:
【参考方案1】:Implement -textField:shouldChangeCharactersInRange:replacementString:
.
【讨论】:
这里的问题是:-textField:shouldChangeCharactersInRange:replacementString: 在插入字符之前被调用。我需要的是在插入字符后调用。如果我知道如何使用 range 和 replacementstring 参数来构造生成的总字符串,我仍然可以使用它 如果有人关心:解决方案是使用 addTarget:selector:controlevent: 捕获控制事件“EditingChanged”: @Infinite:您可能希望将其作为答案并接受自己。【参考方案2】:如果有人关心:解决方案是使用 addTarget:selector:controlevent: ;) 捕获控制事件“EditingChanged”
【讨论】:
【参考方案3】:我有一个UITableViewController
和self.editButtonItem
,仅当UITextField.text
中包含文本时才启用。这是一种确保用户在他/她用一些东西填充这个UITextField
之前不按“完成”的方法。我认为这正是您正在寻找的。我是这样做的:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
// Logs for seeing patterns, if you so please
NSLog(@"replacementString length = %d",string.length);
NSLog(@"textField.text = %@",textField.text);
NSLog(@"range = (%d,%d)\n\n",range.location,range.length);
if (string.length)
self.editButtonItem.enabled = YES;
else if (!string.length && textField.text.length == range.length)
self.editButtonItem.enabled = NO;
return YES;
希望对你有帮助
【讨论】:
以上是关于UITextField valueDidChange-事件的主要内容,如果未能解决你的问题,请参考以下文章
在 UITextField 操作中将 UITextField 字符串转换为 Double
如何调整 UITextField 占位符文本以适合 UITextField 宽度?
如果添加了新的 UITextField,如何向下移动许多 UITextField