2016-01-20 79 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的完成塊中的編輯。