UIButton事件。有什么不同?

时间:2012-07-09 06:20:14

标签: objective-c ios uibutton ibaction

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

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

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

  1. 触摸取消 - 当您触摸按钮但移开手指时 它仍然被取消选择?
  2. 触地 - 右键点击。
  3. 触地重复?
  4. 触摸拖动输入??
  5. 触摸拖出口??
  6. 触摸里面?
  7. 触摸外面?
  8. 在里面触摸 - 当你点击并释放剩余的按钮时 界限。它将UIButtons状态更改为“正常”。
  9. 在外面触摸 - 当你点击并释放按钮离开时 界限?
  10. 其他IBActions不是由UIButton发送的,对吗? 这些事件如何改变UIButton的外观?与highlightedselected一样?

    我很欣赏关于IBActions的好文章的链接,因为我找不到它。

2 个答案:

答案 0 :(得分:139)

来自Apple's doc for UIControlEvents

  
      
  1. UIControlEventTouchCancel

         

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

  2.   
  3. UIControlEventTouchDown

         

    控件中的触碰事件。

  4.   
  5. UIControlEventTouchDownRepeat

         

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

  6.   
  7. UIControlEventTouchDragEnter

         

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

  8.   
  9. UIControlEventTouchDragExit

         

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

  10.   
  11. UIControlEventTouchDragInside

         

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

  12.   
  13. UIControlEventTouchDragOutside

         

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

  14.   
  15. UIControlEventTouchUpInside

         

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

  16.   
  17. UIControlEventTouchUpOutside

         

    控件中手指超出控件范围的触摸事件。

  18.   

答案 1 :(得分:0)

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

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

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


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

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

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

UIControlEventTouchDragOutside :在拖动运动期间,在“ UIControlEventTouchDragExit”之后,只要连续保持原始触摸,就会连续调用

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

注意:我的理解是,以上内容可能对以下方面有所帮助:

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

其他事件:

UIControlEventTouchCancel :用户无法控制的事情是取消了他们的触摸操作。将其视为电话方面的“出问题”。

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


参考文献:

SO 1:UIControlEventTouchDragOutside和UIControlEventTouchDragExit之间的区别

SO 2:什么是UIControlEventTouchCancel?