Ios 使用侧边菜单MMDROURCONTROLLER关闭键盘

Ios 使用侧边菜单MMDROURCONTROLLER关闭键盘,ios,keyboard,Ios,Keyboard,我正在使用MMDrawerController作为辅助菜单。当我打开侧菜单时,在中心视图中找不到关闭键盘的位置 我试过了 在sideMenuViewController的视图中将出现方法中写入[self.view endEditing:YES] centerViewController中的addObserver,调用[self.view endEditing:YES]和postObserver的视图将出现方法 它就是不起作用,就像这样 有人有办法解决这个问题吗?您没有使用观察者,只需将UITe

我正在使用MMDrawerController作为辅助菜单。当我打开侧菜单时,在中心视图中找不到关闭键盘的位置

我试过了

  • sideMenuViewController
    视图中将出现
    方法中写入
    [self.view endEditing:YES]

  • centerViewController
    中的
    addObserver
    ,调用
    [self.view endEditing:YES]
    postObserver
    视图将出现
    方法

  • 它就是不起作用,就像这样


    有人有办法解决这个问题吗?

    您没有使用观察者,只需将UITextField的IBOutlet属性设置为“textfield”


    当出现侧菜单UViewcontroller的视图时添加这一行。

    您对此没有使用观察者,只需将UITextField的IBOutlet属性设置为“textfield”

    当出现侧菜单“视图”控制器的视图时添加此行。

    我找到了解决方案

    在您的CentralView控制器中

    #pragma mark - Button Handlers
    -(void)leftDrawerButtonPress:(id)sender{
        [self.mm_drawerController toggleDrawerSide:MMDrawerSideLeft animated:YES completion:nil];
        [self.textfield resignFirstResponder];
    } 
    
    试试这个方法。它对我有效

    我找到了解决方案

    在您的CentralView控制器中

    #pragma mark - Button Handlers
    -(void)leftDrawerButtonPress:(id)sender{
        [self.mm_drawerController toggleDrawerSide:MMDrawerSideLeft animated:YES completion:nil];
        [self.textfield resignFirstResponder];
    } 
    

    试试这个方法。它对我有用

    今天我遇到了同样的问题:)

    我花了几个小时调试MMDrawer库,并找到了某种解决方案。我的解决方案包括两个步骤:

    1) 在
    MMDrawerController.m
    文件中-在方法的实现中:
    -(void)切换drawerSide:(MMDrawerSide)drawerSide动画:(BOOL)动画完成:(void(^)(BOOL finished))完成
    在方法的开头添加以下代码:
    [self.centerViewController.view endEditing:true]。使用此代码,您可以在点击菜单burger时关闭键盘-作为当前centerViewController子视图的所有视图都尝试退出FirstResponder

    2) 在
    MMDrawerController.m
    文件中-在方法的实现中:
    -(void)panGestureCallback:(UIPangestureRecognitizer*)panGesture
    替换案例UIgestureRecognitizerState的else语句,该语句以以下代码开头:

    else {
         //hide keyboard when pan gesture start
         [self.centerViewController.view endEditing:true];
    
         self.startingPanRect = self.centerContainerView.frame;
    }
    
    我给你一些旧代码——来自图书馆,只是为了更详细的解释:

    else {
         self.startingPanRect = self.centerContainerView.frame;
    }
    
    使用此代码,您可以在启动平移手势时关闭键盘,如果侧菜单允许这种平移手势-所有作为当前centerViewController子视图的视图都尝试退出FirstResponder

    另外,我尝试将此代码放在另一种方法中,但它的行为有点奇怪,因为在移动centerViewController后会出现动画完成块。因此,我认为在平移手势开始时进行
    endEditing:
    是一种方法


    希望能对你有所帮助

    今天我遇到了同样的问题:)

    我花了几个小时调试MMDrawer库,并找到了某种解决方案。我的解决方案包括两个步骤:

    1) 在
    MMDrawerController.m
    文件中-在方法的实现中:
    -(void)切换drawerSide:(MMDrawerSide)drawerSide动画:(BOOL)动画完成:(void(^)(BOOL finished))完成
    在方法的开头添加以下代码:
    [self.centerViewController.view endEditing:true]。使用此代码,您可以在点击菜单burger时关闭键盘-作为当前centerViewController子视图的所有视图都尝试退出FirstResponder

    2) 在
    MMDrawerController.m
    文件中-在方法的实现中:
    -(void)panGestureCallback:(UIPangestureRecognitizer*)panGesture
    替换案例UIgestureRecognitizerState的else语句,该语句以以下代码开头:

    else {
         //hide keyboard when pan gesture start
         [self.centerViewController.view endEditing:true];
    
         self.startingPanRect = self.centerContainerView.frame;
    }
    
    我给你一些旧代码——来自图书馆,只是为了更详细的解释:

    else {
         self.startingPanRect = self.centerContainerView.frame;
    }
    
    使用此代码,您可以在启动平移手势时关闭键盘,如果侧菜单允许这种平移手势-所有作为当前centerViewController子视图的视图都尝试退出FirstResponder

    另外,我尝试将此代码放在另一种方法中,但它的行为有点奇怪,因为在移动centerViewController后会出现动画完成块。因此,我认为在平移手势开始时进行
    endEditing:
    是一种方法


    希望能对你有所帮助

    如果任何人在使用手势打开抽屉时仍有问题,请使用以下代码:

    将代码放在初始化抽屉控制器的位置

    [self.drawerController setGestureCompletionBlock:^(MMDrawerController *drawerController, UIGestureRecognizer *gesture) {
                // hide the keyboard when the gesture completes
                if(drawerController.openSide == MMDrawerSideLeft) {
                    [[UIApplication sharedApplication] sendAction:@selector(resignFirstResponder) to:nil from:nil forEvent:nil];
                }
            }];
    

    对于使用手势打开抽屉仍有问题的人,请使用以下代码:

    将代码放在初始化抽屉控制器的位置

    [self.drawerController setGestureCompletionBlock:^(MMDrawerController *drawerController, UIGestureRecognizer *gesture) {
                // hide the keyboard when the gesture completes
                if(drawerController.openSide == MMDrawerSideLeft) {
                    [[UIApplication sharedApplication] sendAction:@selector(resignFirstResponder) to:nil from:nil forEvent:nil];
                }
            }];
    

    Textfield位于centerViewController中。如何将故事板中的文本字段连接到sideMenuViewController?我仍然在sideMenuViewController的视图中使用observer和post observer。它工作!!!为什么
    [self.view endEditing]
    不能工作?我不认为在编辑self.view的属性时,子视图方法会自动得到调用。子视图的属性可能会像tableview.editing一样发生更改,但textfield的Responder将不会与centerViewController中的textfield相同。如何将故事板中的文本字段连接到sideMenuViewController?我仍然在sideMenuViewController的视图中使用observer和post observer。它工作!!!为什么
    [self.view endEditing]
    不能工作?我不认为在编辑self.view的属性时,子视图方法会自动得到调用。子视图的属性可能会像tableview.editing一样发生更改,但textfield的Responder将不相同[self.view endEditing:YES]这是正确的。但是你在错误的地方使用了这种方法。在主视图中使用此方法控制器视图将消失在本例中不会调用辅助视图将消失:([self.view endEditing:YES]这是正确的。但是您在错误的地方使用了此方法。