gpt4 book ai didi

ios - WKWebView iOS 13 中的 DeviceMotion 和 DeviceOrientation

转载 作者:行者123 更新时间:2023-11-29 11:25:53 24 4
gpt4 key购买 nike

我想在 iOS 13+ 的 WKWebView 中使用 DeviceMotionDeviceOrientation 事件。我正在使用下面的代码

<html>
<style>
#container{
margin: 20px;
padding: 20px
}
#deviceType{
text-align: center;
font-family: Arial, Helvetica, sans-serif;
font-size: 3rem;
font-weight: bold;
color: #08f
}
#permission{
padding: 2rem 5rem;
background: #08f;
color: white;
margin-top: 30;
font-family: Arial, Helvetica, sans-serif;
font-size: 3rem;
border: none;
border-radius: 1rem
}
#permissionStatus{
text-align: center;
font-family: Arial, Helvetica, sans-serif;
font-size: 2.5rem;
font-weight: 600;
color: red;
margin-top: 30px
}
</style>
<body>
<div id="container">
<div id="deviceType"></div>
<div style="text-align: center">
<button id="permission">Ask for permission</button>
</div>
<div id="permissionStatus">Pending</div>
</div>
</body>
<script>

if (typeof DeviceMotionEvent.requestPermission === 'function') {
document.getElementById('deviceType').innerText = 'iOS 13'
document.getElementById('permission').addEventListener('click', function () {
console.log('button clicked')
DeviceMotionEvent.requestPermission().then(response => {

// This is showing "denied" without showing any permission popup
console.log(response)
document.getElementById('permissionStatus').innerText = response

}).catch(console.error)
});
} else {
// ignore this case for processing
console.log('non iOS 13')
document.getElementById('deviceType').innerText = 'non iOS 13'
}
</script>
</html>

此网页在 safari 和 chrome 中均有效,并请求使用设备 Action 的许可,如下所示

图片:

Ask permission on chrome

状态将根据我单击“允许”或“取消”进行更新

enter image description here

但在我的应用程序中,我正在使用 WKWebView 并且当我按下 Ask Permission 按钮时,它没有显示任何请求许可的警报,而是直接将状态设置为拒绝。 (如下所示)。

enter image description here

如果我做错了什么或 WKWebView 方面需要任何额外的东西,请指导我。这是我的 iOS WKWebView 代码。我不知道是否需要更改 WKUserContentControllerWKWebViewConfiguration

self.webView = WKWebView(frame: .zero)
self.webView.translatesAutoresizingMaskIntoConstraints = false

// Add the webview as a subview of MTKView
self.view.addSubview(self.webView)

self.webView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor).isActive = true
self.webView.topAnchor.constraint(equalTo: self.view.topAnchor).isActive = true
self.webView.trailingAnchor.constraint(equalTo: self.view.trailingAnchor).isActive = true
self.webView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor).isActive = true


let websiteDataTypes = NSSet(array: [WKWebsiteDataTypeDiskCache, WKWebsiteDataTypeMemoryCache])
let date = Date(timeIntervalSince1970: 0)
WKWebsiteDataStore.default().removeData(ofTypes: websiteDataTypes as! Set<String>, modifiedSince: date, completionHandler:{ })

self?.webView.load(URLRequest(url: URL(string: url)!))

最佳答案

我尝试使用 uiDelegate 并且成功了

刚刚在 viewDidLoad 里面加了一行

webView.uiDelegate = self

此外,您还必须确认 ViewController 的类型到 WKUIDelegate。就是这样

关于ios - WKWebView iOS 13 中的 DeviceMotion 和 DeviceOrientation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58969959/

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