我遇到了一个问题,我的按钮应该保持“按下”,同时显示从它调用的弹出窗口。 Popover是一些过滤器的选择器,过滤器显示在按钮本身上。当我点击它并显示弹出窗口时,无论如何都会取消选择。
我认为我必须重新定义它在触摸事件中的行为,并使其不响应标准touch up inside
。然后我想知道其他事件的责任是什么?但我在iOS库和StackOverflow中找不到事件列表只是关于touch up inside
或touch down
的错误行为的问题。
那么触摸事件之间的区别是什么?
highlighted
或selected
一样?
我很欣赏关于IBActions的好文章的链接,因为我找不到它。
答案 0 :(得分:139)
来自Apple's doc for UIControlEvents
:
UIControlEventTouchCancel
取消控件当前触摸的系统事件。
UIControlEventTouchDown
控件中的触碰事件。
UIControlEventTouchDownRepeat
控件中的重复触碰事件;对于此事件,UITouch tapCount方法的值大于一。
UIControlEventTouchDragEnter
将手指拖入控件边界的事件。
UIControlEventTouchDragExit
手指从控件内拖动到其边界之外的事件。
UIControlEventTouchDragInside
手指在控件范围内拖动的事件。
UIControlEventTouchDragOutside
手指被拖到控件范围之外的事件。
UIControlEventTouchUpInside
手指在控件范围内的控件中的触摸事件。
- 醇>
UIControlEventTouchUpOutside
控件中手指超出控件范围的触摸事件。
答案 1 :(得分:0)
列出了我认为普通按钮的常见使用顺序/发生可能性:
UIControlEventTouchDown :用户点击按钮。这会触发手指/手写笔接触。
UIControlEventTouchUpInside :用户点击按钮。这会在从屏幕向后拉的手指/手写笔触点上触发。
对于滑块和拖动事件(如移动组件)很有用。以下是发生的顺序:
UIControlEventTouchDragInside :在手指拖动到按钮区域时触发。
UIControlEventTouchDragExit :在拖动运动期间触发。它仅被调用一次,因为用户的手指/手写笔离开了按钮的边界。
UIControlEventTouchDragOutside :在拖动运动期间,在“ UIControlEventTouchDragExit”之后,只要连续保持原始触摸,就会连续调用 。
UIControlEventTouchUpOutside :仅当手指/手写笔不再位于按钮范围内时,这只是手指/手写笔被抬起。重要的(也许很明显)要指出的是,触摸必须在某个时刻位于按钮内,才能将此事件与按钮相关联。
注意:我的理解是,以上内容可能对以下方面有所帮助:
其他事件:
UIControlEventTouchCancel :用户无法控制的事情是取消了他们的触摸操作。将其视为电话方面的“出问题”。
UIControlEventTouchDownRepeat :是否想检测用户发狂并疯狂点击按钮的时间?是否要检测它们是否仍处于Windows模式并试图“双击”?或者,也许您设计了一个按钮,如果它们单击两次,则可以执行不同的操作。此事件对所有这些都有帮助!
参考文献:
SO 1:UIControlEventTouchDragOutside和UIControlEventTouchDragExit之间的区别
SO 2:什么是UIControlEventTouchCancel?