【发布时间】:2015-09-29 09:08:11
【问题描述】:
桌面网站上的 Trello 允许您像这样拖动元素:
但是,在 iOS 上使用 Safari 时,这不起作用。
它要么选择元素,要么弹出一个工作表。
如果我在 UIWebView 或 WKWebView 中显示它,我可以让 WebView 更像桌面 Safari,以便我可以拖动元素吗?
我发现我可以通过向 webview 发送一些 javascript 来停止各种 iOS 操作:
// stop selection
webView.stringByEvaluatingJavaScriptFromString("document.documentElement.style.webkitUserSelect='none';")
// stop copy/paste etc
webView.stringByEvaluatingJavaScriptFromString("document.documentElement.style.webkitTouchCallout='none';")
// stop loupe
webView.stringByEvaluatingJavaScriptFromString("document.body.style.webkitUserSelect='none';")
但这仍然不允许我拖动元素。
有解决办法吗?
(我知道有一个 Trello 应用程序,我只是好奇 WebView 是否可以)
【问题讨论】:
-
CSS 属性
-webkit-user-drag:是一个选项。但这必须针对相应的元素进行。在 iOS 中,滚动会与拖动发生冲突。通常禁用滚动视图的scrollEnabled和bounces属性将允许拖动。我认为这对您来说不是一个可行的解决方案,原因有两个。首先,我认为董事会本身会滚动。因此,上述选项可能不起作用,其次,如果无法滚动,则很难在手机上将网站用作 trello。 -
为了摆脱滚动问题,我想知道是否可以单击并按住...可能几秒钟...在允许移动板之前。并且没有初始保持的拖动将正常滚动。
-
你的 JS 中有触摸事件吗?
-
您必须做两件事:1. 监听
touch*事件并触发相应的mouse*事件(不要忘记复制所有X 和Y 数据,并调用@987654329 @ ontouchmove以防止在拖动时滚动页面,但只能拖动可拖动元素,否则滚动和缩放不起作用)和 2. 在 Trello 上手动启用拖动,因为它们禁用用于移动设备(在他们的搜索中搜索isTouch()JS 文件)。他们使用 jQueryUI 的可拖放和可拖放,但他们以某种方式使用可拖放作为可拖放......所有东西都被包裹在无数个闭包中。 -
使用hammerjs可以轻松完成拖动,但我不知道如何修改trello.com的源以允许这样做。
标签: javascript ios uiwebview wkwebview