延迟按钮的突出显示状态

时间:2013-11-21 23:49:53

标签: ios user-interface ios7

我在两种完全不同的情况下遇到了这个问题,这让它变得非常奇怪。

  1. 情况:UIButton作为另一个UIView的子视图。
  2. 情况:UIBarButtonItem在UIToolBar中。
  3. 在这两种情况下,按钮仅在稍微延迟后突出显示,约为0.5-1秒。绝对要在正常点击时突出显示视图。它们都可以在模拟器上完美运行,但不能在真实设备上运行(我的iPhone 5s配有iOS 7.0.4)。

    我尝试了什么
    将zPosition设置为这些视图的最高值(MAXFLOAT),以确保没有任何东西阻止点击。
    明确启用突出显示。

    两者显然都不起作用。

    编辑:仍未解决。

3 个答案:

答案 0 :(得分:5)

如果按钮靠近显示屏的底边放置,可能会发生这种情况。系统边缘手势与控制中心(或iPhone X和iPad上的App Switcher)存在冲突。它会延迟按钮的触摸,直到确定用户没有执行系统手势为止。

如果您愿意,可以告诉系统优先考虑系统手势的手势。

override func preferredScreenEdgesDeferringSystemGestures() -> UIRectEdge {
    return .bottom
}

请注意,这将要求用户滑动两次以激活系统手势。

答案 1 :(得分:1)

我知道这已经很长时间了,但我刚遇到了类似的问题:

  • 我的UIButtonUINavigationController.view
  • 的子视图
  • 模拟器没有延迟
  • 但是在设备上显示突出显示有延迟

我发现只有从Xcode运行应用程序才会发生这种情况。如果我断开设备并从它的图标打开应用程序,一切正常。

我希望它有所帮助。

答案 2 :(得分:0)

UIBcroll在UIScrollView中? 如果是,则延迟就在那里,因此scrollview可以确定触摸是用于滚动还是应该传递给子视图。

另见UIButton touch is delayed when in UIScrollView