美文网首页
iOS之becomeFirstResponder方法的坑

iOS之becomeFirstResponder方法的坑

作者: 枫叶无处漂泊 | 来源:发表于2019-12-16 15:59 被阅读0次

    前言

    产品提出的需求,让登录和注册在同一个页面,登录和注册两个按钮切换。所以每当切换的时候都要键盘没收回的话,要收键盘。
    当时做的处理使用becomeFirstResponder这个方法,在模拟器上Mac硬件配置高没事,但是在真机上出现卡顿,说明这becomeFirstResponder特别费时。

    becomeFirstResponder 让view变成第一响应对象

    所以当时我就做了收回键盘的处理,就是判断键盘变成第一响应对象,如果变成键盘收回。举个例子可以测试一下:

    //收回键盘
    - (void)resignAllKeyboards {
        
        if ([self.telInputView becomeFirstResponder]) {
            
            [self.telInputView resignFirstResponder];
            return;
        }
        if ([self.pswInputView becomeFirstResponder]) {
            
            [self.pswInputView resignFirstResponder];
            return;
        }
        if ([self.identifyView.inputView becomeFirstResponder]) {
            
             [self.identifyView.inputView resignFirstResponder];
             return;
        }
        if ([self.identifyTelView.inputView becomeFirstResponder]) {
    
            [self.identifyTelView.inputView resignFirstResponder];
            return;
        }
    }
    
    

    直接结果表明,每当执行到这个[self.telInputView becomeFirstResponder]就会出现卡顿。所以尽量不要使用becomeFirstResponder这种费时的方法,及时使用了也要测试一下是否影响性能。

    键盘收回的话不用做判断或者先用isFirstResponder是否是第一响应者

    //收回键盘
    - (void)resignAllKeyboards {
        
    //让所有的文本输入空间都收回键盘。
    if ([self.telInputView isFirstResponder]) {
            
        [self.telInputView resignFirstResponder];
        return;
    }
    if ([self.pswInputView isFirstResponder]) {
            
        [self.pswInputView resignFirstResponder];
        return;
    }
    if ([self.identifyView.inputView isFirstResponder]) {
            
        [self.identifyView.inputView resignFirstResponder];
        return;
    }
    if ([self.identifyTelView.inputView isFirstResponder]) {
    
        [self.identifyTelView.inputView resignFirstResponder];
        return;
    }
    

    使用之后,发现真机切换操作流程非常快。

    结尾

    所以resignFirstResponder就是这个罪魁祸首。所以以后大家使用resignFirstResponder这个方法一定要慎重,多测试一下性能。避免不必要的性能壁垒。

    相关文章

      网友评论

          本文标题:iOS之becomeFirstResponder方法的坑

          本文链接:https://www.haomeiwen.com/subject/nnddnctx.html