作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在Apple的文档中,我没有找到任何与swiftUI摇动有关的手势。那么如何检测呢?
我是快速编程的新手,这个问题使我困扰了很长时间。
在UIKit中,如果我要检测晃动手势,则非常简单直接。在swiftUI中,有一堆手势,例如点击拖动旋转,但是我在官方文档或任何询问的人中找不到摇动手势。在swiftUI中是否有可能获得相同的结果?或者他们只是忘记将其添加到swiftUI框架中了...
如果在swiftUI中无法实现,那么如何将UIKit中的motionEnded函数导入到要检测抖动的swiftUI View 中?
最佳答案
您可以添加新的通知,并在扩展名中覆盖UIWindow.motionEnded
(如先前的回答中所述):
extension NSNotification.Name {
public static let deviceDidShakeNotification = NSNotification.Name("MyDeviceDidShakeNotification")
}
extension UIWindow {
open override func motionEnded(_ motion: UIEvent.EventSubtype, with event: UIEvent?) {
super.motionEnded(motion, with: event)
NotificationCenter.default.post(name: .deviceDidShakeNotification, object: event)
}
}
struct Example: View {
@State private var message = "Unshaken"
var body: some View {
Text(message)
.onReceive(NotificationCenter.default.publisher(for: .deviceDidShakeNotification)) { _ in
self.message = "Shaken, not stirred."
}
}
}
关于uikit - 如何在swiftUI中检测摇动手势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58549151/
我是一名优秀的程序员,十分优秀!