2015-05-19 114 views
0

這一切都適用於我的版本,這是在應用程序商店。但是,如果我恢復我的Git,它不再有效。這可能是因爲我更新Xcode(現在6.3),但不確定。問題是:UITextField編輯開始呼籲查看結束編輯

當我調用UITextField'Editing Did Begin'處理程序時,顯示UIAlert。 警報提醒用戶「您確定要編輯這個?」

如果用戶單擊‘取消’然後我打電話

[self.view endEditing:YES]; 

以前在我的應用程序這不得不離開的UITextField的影響並關閉對話框。

現在後UIAlert是隱藏的,焦點就回的UITextField導致被創建並再次顯示UIAlert。

的問題是,如何從的UITextField?和WH移除焦點你以前是否曾經工作過,但沒有更多?

也試過[發件人resignFirstResponder],但這也沒有辦法。響應

位更多信息評論:這裏是「真的結束編輯」處理程序代碼

- (IBAction)textFieldReturned:(id)sender 
{ 
[sender resignFirstResponder]; 
} 
+0

顯示更多你調用'endEditing:'的代碼。你使用'UIAlertView'還是'UIAlertController'? – rmaddy

+0

使用UIAlertView –

+0

再次,你從哪裏調用'endEditing:'?換句話說,哪個'UIAlertViewDelegate'方法? – rmaddy

回答

1

這個問題似乎試圖從該alertView:clickedButtonAtIndex:方法辭職的文本字段幹。這太快了。

我建議您改爲實施alertView:didDismissWithButtonIndex:委託方法。這樣,當您退出文本字段時,警報已被解除。

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex { 
    if (buttonIndex == alertView.cancelButtonIndex) { 
     [self.view endEditing:YES]; 
    } else { 
     // handle other buttons 
    } 
} 
+0

感謝rmaddy,看起來像我使用錯誤的UIAlertView API調用。其中工作正常,直到我猜應用程序代碼和/或iOS的變化推動了它的邊緣。接得好。 –

+0

我認爲在新的iOS版本中會發生什麼情況是警報會檢測到第一個響應者在顯示時的內容。當它被解僱時它重置第一響應者。這就是爲什麼在使用前面的委託方法時,你的文本字段被作爲第一個響應者放回去的原因。 – rmaddy