pop 一個(gè)viewController時(shí)候鍵盤會(huì)發(fā)生閃現(xiàn)
假如有兩個(gè)ViewController A 和 B(使用了UINavigationController), 在B中的TextField操作結(jié)束后,使用UIAlertView提醒再返回到A界面周瞎,鍵盤會(huì)閃現(xiàn)出來,即使寫了[_textField resignFirstResponder] 和 [self.view endEditing:YES]; 也還是會(huì)發(fā)生饵蒂。
如果直接在Button調(diào)用的方法內(nèi)實(shí)現(xiàn)pop到A(不使用AlertView提醒), 就不會(huì)出現(xiàn)這種情況.
解決方法:
1.這個(gè)問題就是因?yàn)殒I盤收起是有動(dòng)畫的声诸。而在鍵盤收起的動(dòng)畫開始的時(shí)候就pop了,鍵盤的動(dòng)畫沒有執(zhí)行完當(dāng)然要在下一個(gè)vc里繼續(xù)執(zhí)行退盯。所以要等鍵盤完全收起之后再pop或者push彼乌。直接dispatch_after個(gè)0.5秒左右再執(zhí)行pop或者push泻肯。至于為什么用0.5秒,可能因?yàn)橄到y(tǒng)鍵盤收起的duration再0.5內(nèi)會(huì)執(zhí)行完畢慰照。灶挟。
//或者等鍵盤動(dòng)畫結(jié)束后再彈出AlertView
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[alert show];
});
2.添加UITextFieldDelegate,并使alert調(diào)用出來的textField的delegate = self;最后在alert的點(diǎn)擊事件處添加
[alertView textFieldAtIndex:buttonIndex]]resignFirstResponder];
3.由原因是alertview關(guān)閉影響了系統(tǒng)其他的動(dòng)畫導(dǎo)致的。要么延遲調(diào)用毒租,或者自定義一個(gè)alertview稚铣。