У меня проблема с тем, что длительное нажатие и выбор текста в WKWebView будет случайным образом прокручивать веб-просмотр.Это происходит, когда я устанавливаю свойство contentInset.top
представления прокрутки веб-представления.
[Снимок экрана]
- Длительное нажатие на текст.Зеленая область является собственным UIView https://ibb.co/P4LqgBB
- После перетаскивания текста WKWebView неожиданно прокручивает себя вниз https://ibb.co/r5KR4JB
Так как моему приложению необходимо показать собственный вид надзелье веб-просмотра, такое поведение действительно расстраивает моих пользователей, когда им нужно копировать и вставлять текст из веб-представления.
Ниже приведен минимальный код, который можно использовать для воспроизведения проблемы.Я попробовал это на iPhone 8 iOS 12.2, используя Xcode 10.2.Проблема возникает, когда установлено webView.scrollView.contentInset.top = 100
.Более того, если вы измените значение на что-то вроде 1000
, где contentInset.top
длиннее, чем размер экрана телефона, длительное нажатие приведет к мгновенной прокрутке веб-вида.
override func viewDidLoad() {
super.viewDidLoad()
// Create WKWebView
let webView = WKWebView(frame: .zero)
webView.translatesAutoresizingMaskIntoConstraints = false
webView.scrollView.contentInsetAdjustmentBehavior = .never
webView.clipsToBounds = false
webView.scrollView.bounces = false
// Create Native UIView
let nativeView = UIView(frame: .zero)
nativeView.translatesAutoresizingMaskIntoConstraints = false
nativeView.backgroundColor = .green
// Add WebView to the view
view.addSubview(webView)
webView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
webView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
webView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
webView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
// Set contentInset to give blank space for native view
webView.scrollView.contentInset.top = 100
// Add the native view as webView scrollView's child
webView.scrollView.addSubview(nativeView)
nativeView.leadingAnchor.constraint(equalTo: webView.leadingAnchor).isActive = true
nativeView.trailingAnchor.constraint(equalTo: webView.trailingAnchor).isActive = true
nativeView.topAnchor.constraint(equalTo: webView.scrollView.topAnchor,
constant: -100).isActive = true
nativeView.heightAnchor.constraint(equalToConstant: 100).isActive = true
// Load the webpage
let url = URL(string: "https://www.apple.com")!
let request = URLRequest(url: url)
webView.load(request)
}
Я ожидаюдлительное нажатие и прокрутка ведут себя так, как будто contentInset.top
не установлен.
Кто-нибудь знает, как решить эту проблему?