• iOS UIModalPresentationFormSheet风格下的键盘隐藏


    1. 在UIModalPresentationFormSheet(iPad device, without a UINavigationController)下的视图中,如果使用

    [inputView resignFirstResponder];

    是不能把Keyboard收起的,需要使用以下的方式:

    A:

        @try

        {

            Class UIKeyboardImpl = NSClassFromString(@"UIKeyboardImpl");

            id activeInstance = [UIKeyboardImpl performSelector:@selector(activeInstance)];

            [activeInstance performSelector:@selector(dismissKeyboard)];

        }

        @catch (NSException *exception)

        {

            NSLog(@"Exception : %@", exception);

        }

    上面的方法由于用到了Apple的Private API, 将无法通过审核。

    B. 之所以在UIModalPresentationFormSheet下的视图无法用resignFirstResponder是因为在进入到此模式的后,系统将下列中方法返回值置为了YES:

    - (BOOL)disablesAutomaticKeyboardDismissal

    {

        return YES;

    }// disablesAutomaticKeyboardDismissal, 此方法是在UIViewController中。

    将返回值改为NO后,即可正常使用resignFirstResponsder方法隐藏键盘,但在UINavigationController中此方式依然失效,以下将补充说明此情况。

    2. 如果你显示的UIModalPresentationFormSheet视图是在UINavigationController, 那么在UINavigationController的rootViewController中重写

    disablesAutomaticKeyboardDismissal方法也将无法启用resignFirstResponder方法效果,因为显示的视图是UINavigationController的,应该在UINavigationController中

    来重写disablesAutomaticKeyboardDismissal方法。这里通过将扩展的方式来达到在UINavigationController中重写此方法的目的:

    #import <UIKit/UIKit.h>
    
    @interface UINavigationController (UINavigationController_KeyboardDismiss)
    
    - (BOOL)disablesAutomaticKeyboardDismissal;
    
    @end
    
    #import "UINavigationController+UINavigationController_KeyboardDismiss.h"
    
    @implementation UINavigationController (UINavigationController_KeyboardDismiss)
    
    - (BOOL)disablesAutomaticKeyboardDismissal
    {
        return NO;
    }// disablesAutomaticKeyboardDismissal
    
    @end

    经过UINavigationController Category对disablesAutomaticKeyboardDismissal方法的重写后,即可解决resignFirstResponder方法失效的问题。

    参考:http://stackoverflow.com/questions/3372333/ipad-keyboard-will-not-dismiss-if-modal-view-controller-presentation-style-is-ui

  • 相关阅读:
    TCP/IP 基础知识
    30 岁的码农人生 ——人生至暗时,你依然能窥见光明
    巨经典论文!推荐系统经典模型Wide & Deep
    带你领略拼多多2020校招笔试题,这样的难度你可以搞定吗?
    做业务、做技术和打杂,你的职场现状是哪种?
    内卷预警,本科生真的很不适合算法岗位吗?
    codeforces 1424J,为了过这题,我把祖传的C++都用上了!
    有了Git这个操作,我再也不怕代码混乱了!
    学会了这一招,距离Git大神不远了!
    好端端的数据结构,为什么叫它SB树呢?
  • 原文地址:https://www.cnblogs.com/lihaibo-Leao/p/3794549.html
Copyright © 2020-2023  润新知