UIButton事件。有什么区别?



我遇到了一个问题,当我的按钮显示从它调用的popover时,它应该保持"按下"状态。popover是一些过滤器的选择器,过滤器显示在按钮本身。当我点击它,它显示popover时,无论发生什么,它都会被取消选择。

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

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

  1. 触摸取消-当您触摸按钮但移开手指时它仍然被取消选择
  2. 触地-点击右键
  3. 触地重复
  4. 触摸拖动输入
  5. 触摸拖动退出
  6. 触摸拖动内部
  7. 触摸拖动外部
  8. 触摸内部-当你点击并释放按钮时边界。它将UIButtons状态更改为Normal
  9. 触摸外部-当你点击并释放按钮时界限

其他IBActions不是由UIButton发送的,对吧?这些事件如何改变UIButton的外观?像highlighted还是selected

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

来自苹果的UIControlEvents文档:

  1. UIControlEventTouchCancel

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

  2. UIControlEventTouchDown

    控件中的触地跌落事件。

  3. UIControlEventTouchDownRepeat

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

  4. UIControlEventTouchDragEnter

    将手指拖动到控件边界中的事件。

  5. UIControlEventTouchDragExit

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

  6. UIControlEventTouchDragInside

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

  7. UIControlEventTouchDragOutside

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

  8. UIControlEventTouchUpInside

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

  9. UIControlEventTouchUpOutside

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

在中列出,我认为,普通按钮的常用顺序/出现的可能性:

UIControlEventTouchDown:用户点击按钮。这会在进行接触的手指/触笔上触发。

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


对于滑块和拖动事件(如移动组件)非常有用。以下按发生顺序排列:

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

UIControlEventTouchDragExit:在拖动过程中触发。当用户的手指/手写笔离开按钮的边界时,它只被调用一次。

UIControlEventTouchDragOutside:在拖动运动期间,在"UIControlEventTouch退出"之后触发,并且只要原始触摸继续,就被连续调用

UIControlEventTouchUpOutside:这只是手指/触笔被抬起,但仅当手指/触针不再在按钮的范围内时。需要指出的重要一点(可能也是显而易见的)是,触摸必须在某个时刻位于按钮内,才能将此事件与按钮关联起来。

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

  1. 滑动器:正如你所料,触摸可能是故意的,但由于快速滑动动作,他们的手指移动可能会很草率,并在滑动器区域之外抬起
  2. 移动组件,就像在屏幕上推动东西时,当手指/手写笔接触到组件/对象的边界时,您希望移动

其他事件:

UIControlEventTouchCancel:用户无法控制的东西正在取消他们的触摸操作。把这看作是电话方面的"问题"。

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


参考文献:

SO 1:UIControlEventTouchDragOutside和UIControlEventTouchDragExit 之间的Dif

SO 2:什么是UIControlEventTouchCancel?

最新更新