0

我在 UITableView 中嵌入了一些 UITextField,并且我的 UIViewController 类也设置为 UITextFieldDelegate。我没有直接引用 ViewController 类中的 UITextField,它们只能通过访问给定 NSIndexPath 处的特定 UITableView 的单元格来访问。

每当 UIButton 的动作目标由于用户点击而被调用时,' -(void)textFieldDidEndEditing:(UITextField *)textField. 对于最后一个活动字段尚未调用。如何捕获最后一个活动字段中的文本?

我尝试设置标志来记录编辑的开始和结束以及其他一些解决方案,但这些似乎都不正确..

在我的 onButtonTap 动作处理程序中,如果我有这个:

[self.view endEditing:YES]; 
// would the call to 'textFieldDidEndEditing' happen synchronously and then return
// to this line or would they be async?
[self doActionLogic]; //

谁能提出一个好的技术来做到这一点?似乎这将是一个标准问题,但我在找出答案方面有点慢。

4

1 回答 1

0

如果您只需要文本字段的输入,您可以在方法中将测试设置为 ivar 并返回是。

- (BOOL)textFieldShouldEndEditing:(UITextField *)textField

textFieldDidEndEditing 可以在按钮操作之后调用,但是由于您已经在 ivar 中拥有它,所以不会有问题。但是最好的方法是,您可以检查文本字段的输入并启用按钮

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string

因此,只要您在 uitexfield.shouldChangeCharactersInRange 中有一个有效的输入,就启用您的取消按钮,因为您输入了一些内容并且在将输入插入到 uitextfield 之前。

于 2012-08-10T06:56:27.830 回答