标签: ios13.4

WKWebview 允许LinkPreview 错误地中断文本选择

我们有一个使用 WKWebview 的应用程序,但设置allowsLinkPreviewfalse因为我们不希望链接预览行为。似乎从 iOS 13.4 开始,在没有3D 触摸功能的设备(较旧的设备和较新的 iphone 型号)上,设置allowsLinkPreview为 false也会禁用页面中的所有文本选择!对于我们的应用程序,文本选择至关重要。

在文档中的两行之间提出了这个理论阅读

在 iOS 中,此属性在支持 3D Touch 的设备上可用。

在运行 iOS 13 及更高版本的设备上,无论设备是否支持 3D Touch,人们都可以使用长按手势打开上下文菜单。在 3D Touch 设备上,手势可以更快地显示上下文菜单。

这似乎是一个错误,禁用链接预览会禁用web视图中的所有按住手势。

我能想出的唯一解决方法是设置allowsLinkPreviewtrue,然后通过WKUIDelegate 协议禁用上下文菜单。这将禁用单击链接的弹出窗口,但不会禁用单击图像的弹出窗口。而且,它仍然允许用户将链接拖放到 safari 中的分屏视图中,这是我们不想要的。

关于如何完全禁用链接预览/上下文菜单/拖放行为同时仍然允许文本选择的任何建议将不胜感激!

更新
因为我控制了我的应用程序的内容,所以我能够使用以下 css 禁用图像的按住:-webkit-touch-callout: none; 所以我剩下的问题只是禁止从WKWebView.

更新 2 同样,我能够用来-webkit-user-drag: none;禁用链接的拖动,但知道一个非 css 修复程序对我来说似乎是一个 Apple 错误仍然很有用。

ios swift wkwebview 3dtouch ios13.4

5
推荐指数
1
解决办法
1372
查看次数

无法在 iOS 13.4 上与 WKWebView 同时处理触摸

问题: 从一些以前被传递到系统并且可以被处理的iOS 13.4 WebKit的拦截手势开始UIGestureRecognizer同时

演示项目: 我创建WKWebView并将其添加到UIViewController的视图中。我还创建了UIPinchGestureRecognizer并将其添加到UIViewControler的视图中。

class ViewController: UIViewController, UIGestureRecognizerDelegate, WKNavigationDelegate {

    var webView: WKWebView?

    override func viewDidLoad() {
        super.viewDidLoad()

        let pinch = UIPinchGestureRecognizer(target: self, action: #selector(self.pinchHandler))
        pinch.delegate = self
        self.view.addGestureRecognizer(pinch)

        addWebView()
    }

    func addWebView() {
        let webView = WKWebView()
        webView.translatesAutoresizingMaskIntoConstraints = false
        self.view.addSubview(webView)
        NSLayoutConstraint.activate([
            webView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
            webView.topAnchor.constraint(equalTo: view.topAnchor),
            webView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
            webView.bottomAnchor.constraint(equalTo: view.bottomAnchor)
        ])

        self.webView = webView
    }

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        if let localHtmlFile = Bundle.main.url(forResource: …
Run Code Online (Sandbox Code Playgroud)

webkit uigesturerecognizer swift ios13.4

5
推荐指数
1
解决办法
879
查看次数

Why does setting minWidth to .infinity crash SwiftUI app with EXC_BAD_INSTRUCTION?

Here is the exact code that I am running on iOS 13.4/Xcode 11.4:

import SwiftUI

struct TestView: View {

    var body: some View {
        VStack() {
            Text("Hello")
        }
        .frame(minWidth: .infinity)
    }
}

struct LoginView_Previews: PreviewProvider {
    static var previews: some View {
        TestView()
    }
}
Run Code Online (Sandbox Code Playgroud)

The crash happens in iOS, so it's hard to get much useful information other than the following:

Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
#0  0x00007fff2c7cd371 in NSAttributedString.MetricsCache.findMetrics(requestedSize:) ()
Run Code Online (Sandbox Code Playgroud)

Setting minWidth to something other than .infinity fixes …

xcode swift swiftui xcode11.4 ios13.4

5
推荐指数
1
解决办法
1487
查看次数