美文网首页
iOS开发中通过keyWindow隐藏键盘

iOS开发中通过keyWindow隐藏键盘

作者: 梁森的简书 | 来源:发表于2023-01-28 16:03 被阅读0次

思路

  1. 找到keyWindow
  2. 通过keyWindow找到firstResponder
  3. 使用firstResponder调用resignFirstResponder隐藏键盘

代码

/// 隐藏键盘
- (void)_hiddenKeyBoard {
    UIWindow *keyWindow = [self getKeyWindow];
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wundeclared-selector"
    if ([keyWindow respondsToSelector:@selector(firstResponder)]) {
        UIView *firstResponder = [keyWindow performSelector:@selector(firstResponder)];
        [firstResponder resignFirstResponder];
    }
#pragma clang diagnostic pop
}

//获取KeyWindow
- (UIWindow *)getKeyWindow {
    if (@available(iOS 13.0, *)) {
        for (UIWindowScene* windowScene in [UIApplication sharedApplication].connectedScenes) {
            if (windowScene.activationState == UISceneActivationStateForegroundActive) {
                for (UIWindow *window in windowScene.windows) {
                    if (window.isKeyWindow) {
                        return window;
                        break;
                    }
                }
            }
        }
    }
    else {
        return [UIApplication sharedApplication].keyWindow;
    }
    return nil;
}

相关文章

网友评论

      本文标题:iOS开发中通过keyWindow隐藏键盘

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