昨天leader反饋過來一個(gè)很惡心的問題惩琉,App首次登陸,驗(yàn)證密碼通過后拖吼,會(huì)提醒用戶是否開啟指紋解鎖鳞上。當(dāng)用戶點(diǎn)擊確定的時(shí)候,正確的做法是應(yīng)該顯示指紋解鎖的頁面吊档,但是每次在這個(gè)時(shí)候篙议,都會(huì)伴隨著動(dòng)畫-自動(dòng)彈出鍵盤并隱藏掉...然而這個(gè)界面并沒有UITextField或者是UITextView。
反復(fù)測(cè)試怠硼,發(fā)現(xiàn)鍵盤貌似是上個(gè)界面鬼贱,輸入密碼的時(shí)候傳遞過去的(因?yàn)橥瞥鱿乱粋€(gè)界面時(shí)鍵盤是什么樣子大的,動(dòng)畫的時(shí)候的鍵盤就是什么樣子的)香璃。所以一開始我的思路是因?yàn)樯蟼€(gè)界面消失的時(shí)候沒有取消第一響應(yīng)这难。
但是事實(shí)證明并非如此。后來我想葡秒,可能是動(dòng)作執(zhí)行了姻乓,但是動(dòng)畫畢竟有時(shí)間 ,可能時(shí)間沒走完眯牧,所以采用了dispatch_after蹋岩,延遲2.5秒(系統(tǒng)鍵盤收起的時(shí)間)后再推出下一個(gè)界面。然而還是沒有幫助学少。
問題的癥結(jié)到底是什么呢剪个?
事實(shí)上,之所以會(huì)自動(dòng)彈出來鍵盤版确,是因?yàn)樘嵝延脩糸_啟指紋解鎖的視圖UIAlertView造成的扣囊。UIAlertView調(diào)用的時(shí)候,會(huì)暫時(shí)停止系統(tǒng)動(dòng)畫效果绒疗,結(jié)束后再重新尋找動(dòng)畫侵歇,這就出現(xiàn)了鍵盤出現(xiàn)再隱藏的效果。
解決的方法其實(shí)是也挺簡單的吓蘑。也是采用的延時(shí)思路惕虑。
//延時(shí),確保動(dòng)畫執(zhí)行完畢再顯示alert
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.6 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
//第一次登錄,彈框提醒用戶是否開啟指紋密碼枷遂。
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:@"是否啟用指紋密碼" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"確定", nil];
[self.view addSubview:alert];
[alert show];
});