UIButton事件。有什么不同?


71

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

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

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

  1. 触摸取消-当您触摸按钮但将手指移开而仍未选择时?
  2. 着陆-轻按即可。
  3. 着陆重复??
  4. 触摸拖动输入??
  5. 触摸拖动出口?
  6. 触摸内部拖动
  7. 触摸拖动到外面
  8. 在内部进行修饰-点击并释放在其边界内的按钮时。它将UIButtons状态更改为“正常”。
  9. 在外面修饰-当您点击并释放按钮时,是否会触碰到边界?

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

我很高兴找到关于IBAction的好文章的链接,因为我找不到它。



@janusfidel非常感谢,它完全回答了我的问题:)
Protheus

Answers:


147

Apple的文档中获得UIControlEvents

  1. UIControlEventTouchCancel

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

  2. UIControlEventTouchDown

    控件中的触地事件。

  3. UIControlEventTouchDownRepeat

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

  4. UIControlEventTouchDragEnter

    将手指拖动到控件范围内的事件。

  5. UIControlEventTouchDragExit

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

  6. UIControlEventTouchDragInside

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

  7. UIControlEventTouchDragOutside

    手指被拖动到控件范围之外的事件。

  8. UIControlEventTouchUpInside

    控件中的触摸事件,其中手指在控件范围内。

  9. UIControlEventTouchUpOutside

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


4
因此,仅通过“修饰”事件来澄清,就意味着手指已移开,对吗?因为这可能意味着一些不同的东西(如重击小幅上行,或向上滑动并移除手指,或者它可能奇怪涉及这个词的实际意义润色)。
Parthian Shot 2015年

1
@ParthianShot是的,是用户将手指从屏幕上移开。
Protheus 2015年

这听起来像DragEnterDragInside非常相似?
Crashalot

2
@Crashalot我的阅读是,内部拖动将包括手指在视图内移动,而内部拖动将仅涉及边界交叉点
山姆

1
并非总是可以检测到触地手势。有时可以检测到。我怀疑是由于情节提要的布局位置。知道为什么会这样吗?@Protheus
Cherry_thia

11

我列出了普通按钮的常见使用/出现可能性的顺序:

UIControlEventTouchDown:用户点击按钮。这会在手指/手写笔接触时着火。

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


对于滑块和拖动事件(如移动组件)很有用。以下是发生的顺序:

UIControlEventTouchDragInside:当手指拖动到按钮区域中时触发。

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

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

UIControlEventTouchUpUpside:仅当手指/手写笔不在按钮范围内时,这只是手指/手写笔被抬起。重要的一点(也许很明显)是,触摸必须在某个时刻位于按钮内,才能将此事件与按钮相关联。

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

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

其他事件:

UIControlEventTouchCancel:用户无法控制的事情取消了他们的触摸操作。在电话方面,将此视为“出错”。

UIControlEventTouchDownRepeat:是否想检测您的用户何时生气并疯狂地轻按按钮?是否要检测它们是否仍处于Windows模式并尝试“双击”?或者,也许您设计了一个按钮,如果它们点击两次,则会执行不同的操作。此事件对所有这些都有帮助!


参考文献:

SO 1:UIControlEventTouchDragOutside和UIControlEventTouchDragExit之间的区别

SO 2:什么是UIControlEventTouchCancel?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.