显示 UIMenuViewController 时隐藏键盘

Posted

技术标签:

【中文标题】显示 UIMenuViewController 时隐藏键盘【英文标题】:Hide keyboard when UIMenuViewController is shown 【发布时间】:2015-05-14 00:16:54 【问题描述】:

当我在UITextFiled 上显示UIMenuViewController 时,键盘也会弹出。

想知道当UIMenuViewController 可见时是否有办法隐藏键盘。

我使用下面的代码来显示菜单。

    NSArray *buttons = items;
    NSMutableArray *menuItems = [NSMutableArray array];
    for (NSString *buttonText in buttons) 
        NSString *sel = [NSString stringWithFormat:@"magic_%@", buttonText];
        [menuItems addObject:[[UIMenuItem alloc]
                              initWithTitle:buttonText
                              action:NSSelectorFromString(sel)]];
    
    UIMenuController *menuCont = [UIMenuController sharedMenuController];
    [menuCont setTargetRect:view.frame inView:view.superview];
    menuCont.arrowDirection = UIMenuControllerArrowDown;
    menuCont.menuItems = menuItems;
    [menuCont setMenuVisible:YES animated:YES];

【问题讨论】:

我想你可以设置一个观察者来监听UIMenuControllerWillShowMenuNotification,然后在你的视图中调用endEditing的方法 @LouisTur 我添加了 [[NSNotificationCenter defaultCenter]addObserver:self 选择器:@selector(_textWillShowMenu:) name:UIMenuControllerWillShowMenuNotification object:nil];但是如何访问 textWillShowMenu 中的视图? 您可以调用对包含文本的视图的任何引用,或者例如,如果您使用UIViewController,您可以调用[self.view endEditing:YES],调用***视图将resignFirstResponder对于所有子视图 【参考方案1】:

当您想隐藏键盘时(在您的示例菜单项可见)以隐藏键盘使用 [textField resignFirstResponder];

愿你的问题能解决

【讨论】:

resignFirstResponder 将显示键盘刚刚打开和关闭的轻弹效果。

以上是关于显示 UIMenuViewController 时隐藏键盘的主要内容,如果未能解决你的问题,请参考以下文章

加载时选择选项默认值不显示,选择其他选项时不显示

为啥在HUD显示之前显示警报时不显示MBProgressHUD?

点击时突出显示 tableview 单元格,按下警报控制器操作按钮时取消突出显示

为啥单击属性时未显示文档,但显示在窗口中

从目标视图返回时,SwiftUI NavigationLink 显示为突出显示

为啥通过 django 数据显示图表时 Plotly 显示空白?