2016-01-20 51 views
0

考虑一个包含三个或更多个名为“A”,“B”,“C”等的UITextField子视图的简单视图。视图控制器实现UITextFieldDelegate并且具有textFieldShouldEndEditing,看起来像以下:触摸意图的最佳实践

- (BOOL)textFieldShouldEndEditing:(EFFUITextField *)textField 
{ 
    return [self isValidSolution]; 
} 

如果所述第一响应是场A和用户轻敲字段C,假设字段A通过在isValidSolution的标准,C区域将成为第一响应者。

现在考虑同样的情况,但现在我们希望提示与UIAlertController用户,使他们能够覆盖无效的条件:

- (BOOL)textFieldShouldEndEditing:(EFFUITextField *)textField 
{ 
    if ([self isValidSolution]) 
     return YES; 
    [self promptUser]; 
    return NO; 
} 

由于UIAlertController是异步处理,我们需要能够检测它是C领域,用户点击并使其成为第一响应者。

检测用户意图输入哪个字段的最佳做法是什么?如果用户选择忽略验证差异,我们可以使其成为第一响应者?

+0

使用textfieldShouldBeginEditing – beyowulf

回答

1

我会存储你打算在属性中恢复编辑的任何字段,然后在你的UIAlertController的完成块中,在该文本字段上调用becomeFirstResponder。你甚至可以跳过该属性,如果你只是捕获该字段,以恢复在创建时UIAlertController的完成块中的编辑。