76

我遇到了一个问题,我的按钮在显示从中调用的弹出框时应该保持“按下”状态。弹出框是某些过滤器的选择器,过滤器显示在按钮本身上。当我点击它并显示弹出框时,无论如何它都会被取消选择。

我想我必须重新定义它在触摸事件上的行为,并让它不响应标准touch up inside。然后我想知道其他事件负责什么?但我在 iOS 库和 StackOverflow 中找不到事件列表,只是关于touch up insideor的不正确行为的问题touch down

那么触摸事件之间有什么区别呢?

  1. 触摸取消 - 当您触摸按钮但将手指移开并保持取消选择时?
  2. 触地 - 就在水龙头上。
  3. 着陆重复??
  4. 触摸拖动进入??
  5. 触摸拖动退出??
  6. 触摸拖动里面??
  7. 触摸拖到外面??
  8. 内部修饰 - 当您点击并释放按钮时,仍留在其范围内。它将 UIButtons 状态更改为 Normal。
  9. 在外面修饰 - 当您点击并释放按钮时离开它的界限?

UIButton 不会发送其他 IBAction,对吧?还有这些事件如何改变 UIButton 的外观?喜欢highlighted还是selected

我很感激有关 IBActions 的好文章的链接,因为我找不到它。

4

2 回答 2

151

来自Apple 的文档UIControlEvents

  1. UIControlEventTouchCancel

    取消控件当前触摸的系统事件。

  2. UIControlEventTouchDown

    控件中的触地事件。

  3. UIControlEventTouchDownRepeat

    控件中的重复触地事件;对于此事件,UITouch tapCount 方法的值大于一。

  4. UIControlEventTouchDragEnter

    手指被拖入控件边界的事件。

  5. UIControlEventTouchDragExit

    手指从控件内拖动到其边界外的事件。

  6. UIControlEventTouchDragInside

    在控件边界内拖动手指的事件。

  7. UIControlEventTouchDragOutside

    手指被拖动到控件边界之外的事件。

  8. UIControlEventTouchUpInside

    手指位于控件边界内的控件中的触摸事件。

  9. UIControlEventTouchUpOutside

    手指在控件边界之外的控件中的触摸事件。

于 2012-07-09T06:30:53.837 回答
13

列出,我会考虑,一个普通按钮的常见使用顺序/出现的可能性:

UIControlEventTouchDown:用户点击了按钮。这会在手指/触笔接触时触发。

UIControlEventTouchUpInside:用户点击了按钮。这会触发从屏幕拉回的手指/触控笔触点。


对于滑块和拖动事件(例如移动组件)很有用。以下按出现顺序排列:

UIControlEventTouchDragInside:当手指拖入按钮区域时触发。

UIControlEventTouchDragExit:在拖动动作期间触发。它只被调用一次,因为用户的手指/触控笔离开了按钮的边界。

UIControlEventTouchDragOutside:在拖动动作期间触发,在“UIControlEventTouchDragExit”之后,只要原始触摸继续,就会连续调用。

UIControlEventTouchUpOutside:这只是手指/触控笔被抬起但仅当手指/触控笔不再在按钮范围内时。需要指出的重要事情(可能很明显)是触摸必须在某个时间点在按钮内才能将此事件与按钮相关联。

注意:我的理解是以上内容可以帮助:

  1. 滑块:正如您所料,触摸可能是有意的,但由于快速滑动动作,他们的手指移动可能马虎并抬起到滑块区域之外。
  2. 四处移动组件,例如当您在屏幕上推动事物时,您希望在手指/触控笔触摸组件/对象的边界时发生移动。

其他活动:

UIControlEventTouchCancel:用户无法控制的东西正在取消他们的触摸动作。将此视为电话方面的“出错”。

UIControlEventTouchDownRepeat:想要检测用户何时生气并疯狂地点击按钮?想要检测他们是否仍处于 Windows 模式并尝试“双击”?或者,也许你设计了一个按钮,如果他们点击两次,就可以做一些不同的事情。这个活动对所有这些都有帮助!


参考:

SO 1:UIControlEventTouchDragOutside 和 UIControlEventTouchDragExit 之间的差异

SO 2:什么是 UIControlEventTouchCancel?

于 2019-04-28T23:42:20.300 回答