【问题标题】:UISlider events not cancelled in iOS 8?iOS 8 中未取消 UISlider 事件?
【发布时间】:2014-08-11 18:06:36
【问题描述】:

我们目前正在 iOS 8 设备上测试商店中的应用(iOS 7 应用)。我们注意到 UISlider 存在很大的性能问题。

如果我们从左到右快速拉动滑块几次,滑块不会立即到我们最后的位置。它会执行我们用手指完成的每一个动作。似乎中间触摸事件没有正确取消。

在 iOS 7 上,滑块性能很好。

有没有人遇到过同样的问题?这是一个已知问题吗?有解决办法吗?

【问题讨论】:

    标签: ios performance ios8 uislider


    【解决方案1】:

    我在使用 SmartGo Kifu 时遇到了同样的问题;归档为 rdar://18245085。这是我目前的解决方法:使用派生自 UISlider 的类,并覆盖 continueTrackingWithTouch:withEvent: 以过滤掉来得太快的事件。

    - (BOOL)continueTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event
    {
        if (self.tracking)
        {
            const NSTimeInterval TOO_FAST_TO_HANDLE = 0.1;
            if ([event timestamp] - previousTimestamp >= TOO_FAST_TO_HANDLE)
            {
                previousTimestamp = [event timestamp];
                return [super continueTrackingWithTouch:touch withEvent:event];
            }
        }
        return self.tracking;
    }
    

    仍然希望这会在 iOS 8 的最终版本中得到解决,或者有人有更好的方法来处理这个问题。

    【讨论】:

    • 这似乎在 iOS 8 的最终版本中得到修复!很高兴不必发布此 hack。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-30
    相关资源
    最近更新 更多