【问题标题】:How to detect when horizontal swipe starts UITableView如何检测水平滑动何时开始 UITableView
【发布时间】:2013-12-02 22:49:31
【问题描述】:

我有一个 UITable,每个单元格都有一个按钮。

当你按下按钮时,会发生一些事情。

当您在单元格上向左滑动时,导航控制器会推送到另一个视图。

问题是有时这两件事会重叠。

触地得分甚至可能会等待半秒钟才能注册触地得分。

这足以让它在用户有时在中间滑动时进行注册。

我想这样做,如果用户在中间滑动(用户的手指速度可能大于一定量?)然后我可以将按钮设置为不可点击。

但我不知道如何检测触摸的速度。我想结合一个计时器和一个存储旧触摸位置的变量?但我也不能使用平移手势识别器,因为它会覆盖表格上的滚动功能和视图控制器上的向右滑动功能。

【问题讨论】:

  • 按钮识别触摸向下而不是触摸向上有多重要?您使用的是轻击手势识别器还是控制状态?
  • 我正在使用我相信的控制状态。至关重要的是它是触地 - 一旦触地被调用,按钮就会改变大小

标签: ios objective-c uitableview uigesturerecognizer


【解决方案1】:

你可以使用,

[yourButton setExclusiveTouch:YES];

以避免不必要的触摸事件。初始化的时候试试yourButton

【讨论】:

    【解决方案2】:

    如果您在手势识别器上将 delaysTouchesBegan 设置为 YES,那么在滑动手势失败之前它不会向视图发送触摸。这应该会阻止在滑动的同时发生触地。

    【讨论】:

    • 我认为他的问题是 UIControl 的状态在滑动时发生了变化,而不是相反(在控件状态上识别的手势发生了变化)
    • 您的评论暗示您误解了这段代码的作用。我希望控件状态不会随着此更改而在滑动时发生变化,因为它会停止控件接收触摸事件,直到滑动识别失败。您是否尝试设置 delaysTouchesBegan?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-10
    • 1970-01-01
    • 2017-10-21
    • 2012-01-24
    • 2020-05-07
    • 2018-03-18
    • 1970-01-01
    相关资源
    最近更新 更多