gpt4 book ai didi

iphone - 如何删除 UIMenuController 中的 COPY UIMenuItem

转载 作者:行者123 更新时间:2023-12-03 17:00:08 26 4
gpt4 key购买 nike

我正在开发 iPhone 应用程序并使用 UIWebViews。我计划自定义当我在 UiWebView 中突出显示字符串(复制、全选、剪切等)时弹出的 UIMenuItems。我尝试删除这些菜单项,但无法删除“复制”菜单项。

我需要你们的帮助。

谢谢,ZaldzBugz

最佳答案

你将不得不进行一些劫持。我什至不知道这是否可能。看起来它可能响应一个名为 UILongPressGestureRecognizer 的手势事件。

您需要找出添加了手势的 View 。像这样的东西。

NSArray *gestures = myWebView.gestureRecognizers;
for(int i=0;i<[gestures count];i++){
UIGestureRecognizer g = [gestures objectAtIndex:i];
if([g isKindOfClass:UILongPressGestureRecognizer.Class]){
[myWebView removeGestureRecognizer:g];
break;
}
}

但我不认为手势直接在 UIWebview 上。它位于其 subview 之一。

所以它可能在这个 subview 上

UIScrollView *sview = [[mywebview subviews] objectAtIndex:0];

如果不是在那个 View 上,那么它可能是在最上面的 View 上,这就是我怀疑的。它是一种未记录的 View 类型,但如果您将其视为我们正在调用的方法的 UIView,那么它可能是安全的。另外,因为您将其视为 UIView,所以据我所知,它并不违反规则。

UIScrollView *sview = [[mywebview subviews] objectAtIndex:0];
UIView *realWebView = [[sview subviews] objectAtIndex:10];

我没有编写代码片段(未经测试)来尝试从所有 View 中删除手势的原因是因为您知道从哪个 View 中删除手势非常重要。

删除它后,您需要编写自己的 UILongPressGestureRecognizer,然后将新的 UILongPressGestureRecognizer 添加到相应的 View (它被删除的 View )。

您已经失去了复制选择等所有功能...但现在您可以实现自己的功能。

如果您想要一些旧功能,我想我知道如何恢复它,但是我不能保证这是允许的或安全的。

在删除手势之前,您需要重写 UIView 的方法。您应该能够在当前的工作类文件(位于文件顶部)中执行此操作

@implementation UIView (extended)
-(BOOL) respondsToSelector:(SEL)aSelector {
printf("SELECTOR: %s\n",
[NSStringFromSelector(aSelector) UTF8String]);

return [super respondsToSelector:aSelector];
}
@end

我不能 promise 任何事情,但这应该记录您 View 中调用的每个方法的名称。

运行您的应用程序并执行复制、粘贴、选择、选择所有方法。您的日志应该显示按下按钮时调用的方法。当您按下按钮时,它可能会显示多种方法,您可能只需要第一个。

现在,当您创建菜单项时,您知道要为其分配什么选择器。

这一切都只是猜测。希望对您有所帮助。

关于iphone - 如何删除 UIMenuController 中的 COPY UIMenuItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3262530/

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