gpt4 book ai didi

uikit - 如何在swiftUI中检测摇动手势

转载 作者:行者123 更新时间:2023-12-03 16:15:33 25 4
gpt4 key购买 nike

在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)
}
}

有了这个,您就可以轻松地在您的 View 中订阅通知:
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/

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