UIButton事件.有什么不同?

Pro*_*eus 59 objective-c uibutton ibaction ios

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

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

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

  1. 触摸取消 - 当您触摸按钮但移开手指时它仍然被取消选择?
  2. 触地 - 右键点击.
  3. 触地重复?
  4. 触摸拖动输入?
  5. 触摸拖出口?
  6. 触摸里面?
  7. 触摸外面?
  8. 在里面触摸 - 当你点击并释放按钮时,它会保持在界限内.它将UIButtons状态更改为Normal.
  9. 在外面触摸 - 当你点击并释放按钮离开它的界限?

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

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

Pro*_*eus 141

来自Apple的文档UIControlEvents:

  1. UIControlEventTouchCancel

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

  2. UIControlEventTouchDown

    控件中的触碰事件.

  3. UIControlEventTouchDownRepeat

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

  4. UIControlEventTouchDragEnter

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

  5. UIControlEventTouchDragExit

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

  6. UIControlEventTouchDragInside

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

  7. UIControlEventTouchDragOutside

    手指在控件边界外拖动的事件.

  8. UIControlEventTouchUpInside

    控件中的触摸事件,其中手指在控件的边界内.

  9. UIControlEventTouchUpOutside

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

  • 所以,只是为了澄清,通过"修饰"事件,它意味着手指被移除了,对吧?因为这可能意味着许多不同的事情(例如,轻轻向上滑动,或向上滑动并移除手指,或者它可能奇怪地涉及单词[touch-up]的实际含义(http://www.merriam-webster. COM /词典/触摸式)). (4认同)
  • @Crashalot我的阅读是,内部拖动将包括您的手指在视图内部移动,而内部拖动将仅涉及边界交叉 (2认同)

Dav*_*e G 11

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

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

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


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

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

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

UIControlEventTouchDragOutside:在拖动动作期间触发,在 'UIControlEventTouchDragExit' 之后,并持续调用,只要原始触摸继续。

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

注意:我的理解是上述内容有助于:

  1. 滑块:正如您预期的那样,触摸可能是有意的,但由于快速滑动动作,它们的手指移动可能会很松散并抬升到滑块区域之外。
  2. 四处移动组件,就像在屏幕上推东西一样,您希望在手指/手写笔接触组件/对象的边界时发生移动。

其他活动:

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

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


参考:

SO 1:区分 UIControlEventTouchDragOutside 和 UIControlEventTouchDragExit

SO 2:什么是 UIControlEventTouchCancel?