【问题标题】:How to detect shake in UITableViewCell如何检测 UITableViewCell 中的抖动
【发布时间】:2021-09-02 19:05:49
【问题描述】:

我想在 UITableViewCell 中检测摇晃手势,但未注册摇晃。有没有办法检测 UITableView 单元格中的抖动?

这是我现在使用的代码:

extension MyTableViewCell {
    override func motionBegan(_ motion: UIEvent.EventSubtype, with event: UIEvent?) {
        print("shake started")
    }
    
    override func motionEnded(_ motion: UIEvent.EventSubtype, with event: UIEvent?) {
        print("shake stopped")
    }
}

【问题讨论】:

  • 为什么要在表格视图单元格中执行此操作?您希望打印的“摇动开始”数量与屏幕上的单元格数量一样多吗?
  • tableviewcell 中有特定的属性在单元格中进行动画处理,我想在发生抖动时更改单元格中发生的动画@Sweeper
  • 所以看起来你希望你的所有细胞都响应运动事件,我不认为这不是真的。只有一个“第一响应者”。你最多可以让一个细胞响应运动事件。你可以做的是让任何持有表格视图的东西(例如你的 VC)处理运动事件,更新变量,然后重新加载可见单元格。
  • 正如@Sweeper 所说,在UITableView 下检测设备被晃动是没有意义的。
  • 您需要使用通知。

标签: ios swift xcode uitableview shake


【解决方案1】:

我建议将您的 motionBegan/motionEnded 方法添加到您的视图控制器,然后更新支持您的表格视图的模型以反映摇动事件并告诉表格视图重新加载。 (例如,您可以将 isShaking 属性添加到保存表格视图单元格设置的结构数组中。)在您的 cellForRowAt() 方法中,检查模型以查看您的 isShaking 属性是否为该 @987654324 @ 是真的,如果是的话,对你的单元格动画做任何你需要的改变。

【讨论】:

    猜你喜欢
    • 2012-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-18
    相关资源
    最近更新 更多