由于在app中的其他地方使用了UIMenuController,UISearchBar显示错误的UIMenuItems

时间:2014-05-22 15:43:02

标签: ios uiviewcontroller uisearchbar uimenucontroller uiresponder

我有MyRootViewController按下按钮时以模态方式显示MyModalViewControllerMyModalViewController包含UISearchBar,我想要在长文本的文本字段中显示常用的[剪切|复制|粘贴|全选]文本选项。

MyRootViewController在长时间内显示自定义UIMenuItems(通过UIMenuController),因此会覆盖- (BOOL)canBecomeFirstResponder- (BOOL)canPerformAction:(SEL)action withSender:(id)sender并实施-(void)duplicate:(id)sender和{ {1}}。

我遇到的问题是-(void)delete:(id)sender被问到MyRootViewController哪个UIMenuItems显示UISearchBarMyModalViewController,当用户长按其中并因此显示不相关的菜单项,而不是文本字段的常用[剪切|复制|粘贴|全选]选项。

我的理解是发生了这种情况,因为MyRootViewController仍然在响应者链中,即使它当前不可见。

我到目前为止提出的最佳解决方案是继承UISearchBar并覆盖- (BOOL)canPerformAction:(SEL)action withSender:(id)sender,返回YES进行剪切,复制,粘贴或全选。这会阻止iOS继续向下看响应者链。但这感觉就像是一个黑客 - 我不应该只是为了使UISearchBar与系统的其他部分保持一致,只是因为我在其他地方使用UIMenuController

有没有人知道这个问题在技术上更正确的解决方案?

1 个答案:

答案 0 :(得分:0)

您可以选择仅在长按时设置menuItems [UIMenuController sharedController]属性。