UIAlertView 键盘落下又升起的问题

iOS8以上建议用UIAlertController
iOS8以上建议用UIAlertController
iOS8以上建议用UIAlertController

这个问题是由于苹果在iOS8.3之后,在AlertView dismiss的时候,又恢复了文本框的输入状态(变态啊,恢复它干嘛)
个人挺喜欢用AlertView的,但还是有一些问题,慢慢来填坑吧

话说,问题是这么出现的:一天在改造前任一个控制器的时候,将所有的view层代码都抽出来了,其中界面有UITextField,有AlertView,在编辑状态下,触发AlertView弹框(触发时,已[self endEditing:YES];)键盘落下了,在点击AlertView弹框上的按钮触发另一个跳转时,键盘嗖的一下又蹿出来刷了一下存在,虽然跳转前又落了,但挺不爽,决定给他干掉。

干掉的方式有两种:
1.不弃坑,继续使用AlertView,只是延迟展示0.5s(时间自己调,我这调到0.4都不行)。

dispatch_after(dispatch_time(DISPATCH_TIME_NOW,(int64_t)(0.5*NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
    [alert show];
});

2.第二种,开篇说的,用UIAlertController,虽不习惯,但也要顺应发展趋势,在UIAlertController下没有这个问题。
之所以不习惯用UIAlertController,是因为在View类中,用这玩意,最后你需要用控制器来present,忒麻烦,还得先便利responder,找到当前view的控制器,然后用它来present。方法给粘出来了,用者自取:

-(UIViewController *)getBYCurrentVC{
    UIResponder *next = [self nextResponder];
    do {
        if ([next isKindOfClass:[UIViewController class]]) {
            return (UIViewController *)next;
         }
    next = [next nextResponder];
     } while (next != nil);
     return nil;
}

调用方法:

[[self getBYCurrentVC] presentViewController:alertController animated:YES completion:nil];

你可能感兴趣的:(UIAlertView 键盘落下又升起的问题)