gpt4 book ai didi

iphone - 在 iphone 的 UIWebView 中显示选择的自定义菜单

转载 作者:太空狗 更新时间:2023-10-30 03:13:25 24 4
gpt4 key购买 nike

当用户在 UIWebView 上完成选择时,我想显示 2 个选项,例如“hi”和“bye”。

我已将观察者添加到我的 View Controller 中,如下所示。但我不知道进一步的实现。

[[UIMenuController sharedMenuController] addObserver:self 
forKeyPath:UIMenuControllerWillShowMenuNotification
options:nil
context:nil
];

最佳答案

萨加尔,

你的问题已经有几个月了,但我终于想出了这个问题,所以我想我会回答它以防它能帮助别人。

我将以下代码添加到包含 webview 的 View Controller 的 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]];
}

在我的 viewDidDisappear: 中,我继续删除这些项目:

- (void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];

[[UIMenuController sharedMenuController] setMenuItems:nil];
}

然后,我在 View Controller 中实现了 canPerformAction:withSender: 方法。它有助于理解响应者和响应者链的概念,以了解这里发生的事情。基本上,您的 uiviewcontroller 是响应链的一部分,因此系统会询问它是否可以处理响应链上层对象(例如 UIWebView)不知道如何处理的任何操作(例如您在上面添加的自定义操作)(有关详细信息,请参阅 UIResponder documentationEvent Handling Guide for iOS

现在,当为 webview 调用 canPerformAction:withSender: 时,sender 参数设置为 nil。因此,我尝试在如何编写此函数方面变得聪明一些。基本上,我确保发件人为零,我正在向用户显示 webview,并且页面上的任何其他控件都不是第一响应者。如果是这样,那么我会检查这是否是我在上面定义的操作之一,如果是,则返回 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)。

关于iphone - 在 iphone 的 UIWebView 中显示选择的自定义菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2955354/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com