在iPhone中显示UIWebView中的自定义菜单
我想显示2个选项,如“hi”&当用户在UIWebView上完成选择时,“再见”。
我将观察者添加到我的视图控制器如下。但我不知道进一步的实施。请指导我 [[UIMenuController sharedMenuController] addObserver:self forKeyPath:UIMenuControllerWillShowMenuNotification options:nil context:nil ]; 提前感谢您分享您的知识。 萨加尔 解决方法
萨格尔,
你的问题是几个月了,但我终于想到了这一个,所以我想我会回答,以防万一有助于别人。 我将以下代码添加到包含Webview的视图控制器的viewDidAppear:方法中。 - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; UIMenuItem *customMenuItem1 = [[[UIMenuItem alloc] initWithTitle:@"Custom 1" action:@selector(customAction1:)] autorelease]; UIMenuItem *customMenuItem2 = [[[UIMenuItem alloc] initWithTitle:@"Custom 2" action:@selector(customAction2:)] autorelease]; [[UIMenuController sharedMenuController] setMenuItems:[NSArray arrayWithObjects:customMenuItem1,customMenuItem2,nil]]; } 在我看来,DIDDisappear :,我继续删除这些项目: - (void)viewDidDisappear:(BOOL)animated { [super viewDidDisappear:animated]; [[UIMenuController sharedMenuController] setMenuItems:nil]; } 然后,我在视图控制器中实现了canPerformAction:withSender:方法。它有助于理解响应者和响应者链的概念,以了解这里发生了什么。基本上,您的uiview控制器是响应者链的一部分,因此会询问是否可以处理响应者链(如UIWebView)的对象较高的任何操作(如您上面添加的自定义操作)不知道如何处理(见UIResponder documentation和Event Handling Guide for iOS的血清细节)。 现在,当CanPerformAction:withSender:被调用为webview时,sender参数设置为nil。所以,我试着对我如何写这个功能有点聪明。基本上,我确保发件人为零,我向用户显示网络视图,页面上的任何其他控件不是第一个响应者。如果是这样,那么我检查一下这个是否是上面定义的一个动作,如果是的话,那么返回YES。在所有其他情况下,通过在super上调用相同的方法从UIViewController返回默认值。 - (BOOL)canPerformAction:(SEL)action withSender:(id)sender { if (webView.superview != nil && ![urlTextField isFirstResponder]) { if (action == @selector(customAction1:) || action == @selector(customAction2:)) { return YES; } } return [super canPerformAction:action withSender:sender]; } 当然,现在下一步是弄清楚如何真正地做一些选择(可能通过在webview中运行一些JavaScript)。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |