當在UITableView中選擇一行並且在導航控制器內觸發推送區時,我想從當前編輯的文本字段中退出第一響應者。這是在一個popover內發生的。當使用UINavigationController時,退出didSelectRowAtIndexPath中的第一響應者
我已經試過兩件事情:
(1)我可以看到文本框的辭職第一響應者,而動畫,但後來當我回到視圖控制器再次進行第一個響應者顯示鍵盤。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[self.view endEditing:YES];
}
(2)這將防止回到視圖控制器當編輯的恢復,但這種方法打破了動畫。在動畫結束時,第一個視圖控制器會變黑,並且會跳一點點。
編輯:剛剛意識到,因爲它有事情做與鍵盤動畫比推動畫更快,而且只要鍵盤消失得黑色和酥料餅的開始,這僅僅是在橫向模式下可見當鍵盤爲它留出空間時,將動畫設置爲更高的高度。在動畫導航控制器中的動畫時,動畫無法處理展開彈出窗口。當刪除下面的代碼並推送並讓iOS移除鍵盤時,鍵盤和推動畫將完全同時進行並避免此問題。我想知道如何在迫使辭職的時候讓自己發生。
- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[self.view endEditing:YES];
return indexPath;
}
如何改變視圖控制器時,沒有它航行回來時,再恢復對文本字段中的第一個響應者,我可以辭職急救員?
您可以使用shouldBecomeFirstResponder委託方法來控制成爲第一響應者的東西。還打電話resignFirstResponder(不確定呼叫的確切措辭)工作? – Bergasms
感謝您的回覆。從另一個視圖控制器返回時,我不知道如何識別情況,所以shouldBecomeFirstResponder可能會很棘手? resignFirstResponder的結果與endEditing完全相同。我在視圖控制器上有兩個文本框,這就是爲什麼我使用endEditing來覆蓋這兩個文本框。 – thejaz
我認爲問題可能是,儘管視圖正在結束編輯,但實際的文本框仍然被註冊爲第一響應者。我建議參考第一響應者。 EG UItextField * firstResponder ;,並將其與參數設置爲textField:DidBecomeActive調用。所以你總是對當前的第一響應者有一個參考。然後,在viewWillDisappear中,調用[firstRespodner resignFirstResponder] ;.這應該確保沒有第一響應者離開。希望可以幫助。 – Bergasms