iphone - UIWebView 事件并按住以选择/复制

标签 iphone uiwebview

我创建了 UIWebView 的子类,并在其顶部添加了一个 UIView,以便捕获触摸事件并使用它们。

现在,由于在 UIWebView 顶部添加了额外的 View ,文本选择根本不起作用。当我删除额外的 UIView 时,文本会被选中,但我无法识别事件。

有没有办法让这两种功能共存?

[编辑]

可能是我的帖子不够清楚。当我子类化 UIWebView 来处理事件时,选择停止工作。我无法再选择要复制的文本。有什么想法吗?

最佳答案

“UIWebView 类不应被子类化。” - 来自 Apple's UIWebView docs .

听起来您正试图扰乱人们与网页的交互方式,这可能会让您被应用商店拒绝。 (对于许多可能的拒绝原因,请查看 app rejected 。)

如果您不担心这一点,这里有一些建议可能会帮助您实现目标:

  • 如果您想控制用户可以通过超链接访问或不能访问的位置,或者只是在用户单击某些链接时执行一些代码,您可以通过 webView:shouldStartLoadWithRequest:navigationType: 添加一个钩子(Hook)。 UIWebViewDelegate的方法协议(protocol)。非常方便。
  • 如果您想对页面的行为或外观进行一些简单的修改,您实际上可以通过调用 stringByEvaluatingJavaScriptFromString: 在页面中执行您自己的 javascript ,UIWebView的方法本身。只需将您的 JavaScript 作为字符串传递即可。

而且,如果这没有给你想要的(在这种情况下,你真的会勾掉他们的应用商店评论人员),那么你可能可以做你已经在做的事情,然后传播所有这些UITouch直接进入 UIWebView本身。像这样的例子(在重叠的 UIView 中):

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
  [self doWhatever];
  [underlappingWebView touchesMoved:touches withEvent:event];
}

这样你就可以鱼与熊掌兼得(获取用户触摸信息)并吃掉它(让网页像平常一样运行)。

关于iphone - UIWebView 事件并按住以选择/复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1258771/

相关文章:

javascript - 在 UIWebView 中删除网站标题后的差距

iphone - 你如何清除 UIWebView 的缓存?

iphone - JSON 响应 iPhone App 的非空验证

iphone - 将 UITapGestureRecognizer 添加到 UIWebView

iphone - __dyld_dyld 应用程序启动时出现 fatal error

ios - 是否可以隐藏 UINavigationController 然后在用户向下滑动时显示它?

objective-c - 在 iOS 上创建复合 ScrollView 的最佳方法是什么

ios - 如何在用户授予权限后以编程方式发送短信?

iphone - 检查核心数据数据库中实体存在的通用方法

javascript - 使用 javascript 将大型 HTML 字符串加载到 UIWebView