iOS开发中通过keyWindow隐藏键盘

思路

  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;
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容