【问题标题】:Difference between UIControl eventsUIControl 事件之间的区别
【发布时间】:2016-09-08 07:07:54
【问题描述】:

Documentation of UIControl Class

UIControlEventTouchDragInsideUIControlEventTouchDragEnterUIControlEventTouchUpInside 有什么区别?一切似乎都一样。

【问题讨论】:

标签: ios uislider uicontrolevents


【解决方案1】:

不,这些都不一样。虽然他们都来自UIControl

Apple 在 struct 中为 swift 提供了这些东西,而对于 Objective-C,它在 enum 中提供。这两个都在UIControlEvents 内。以下是您可能会看到的structenum

struct UIControlEvents : OptionSetType { //This is for Swift.
    init(rawValue rawValue: UInt)
    static var TouchDown: UIControlEvents { get }
    static var TouchDownRepeat: UIControlEvents { get }
    static var TouchDragInside: UIControlEvents { get }
    static var TouchDragOutside: UIControlEvents { get }
    static var TouchDragEnter: UIControlEvents { get }
    static var TouchDragExit: UIControlEvents { get }
    static var TouchUpInside: UIControlEvents { get }
    static var TouchUpOutside: UIControlEvents { get }
    static var TouchCancel: UIControlEvents { get }
    static var ValueChanged: UIControlEvents { get }
    static var PrimaryActionTriggered: UIControlEvents { get }
    static var EditingDidBegin: UIControlEvents { get }
    static var EditingChanged: UIControlEvents { get }
    static var EditingDidEnd: UIControlEvents { get }
    static var EditingDidEndOnExit: UIControlEvents { get }
    static var AllTouchEvents: UIControlEvents { get }
    static var AllEditingEvents: UIControlEvents { get }
    static var ApplicationReserved: UIControlEvents { get }
    static var SystemReserved: UIControlEvents { get }
    static var AllEvents: UIControlEvents { get }
}


typedef enum UIControlEvents : NSUInteger { //This is for Objective-C.
   UIControlEventTouchDown               = 1 << 0,
   UIControlEventTouchDownRepeat         = 1 << 1,
   UIControlEventTouchDragInside         = 1 << 2,
   UIControlEventTouchDragOutside        = 1 << 3,
   UIControlEventTouchDragEnter          = 1 << 4,
   UIControlEventTouchDragExit           = 1 << 5,
   UIControlEventTouchUpInside           = 1 << 6,
   UIControlEventTouchUpOutside          = 1 << 7,
   UIControlEventTouchCancel             = 1 << 8,
   
   UIControlEventValueChanged            = 1 << 12,
   UIControlEventPrimaryActionTriggered  = 1 << 13,
   UIControlEventEditingDidBegin         = 1 << 16,
   UIControlEventEditingChanged          = 1 << 17,
   UIControlEventEditingDidEnd           = 1 << 18,
   UIControlEventEditingDidEndOnExit     = 1 << 19,
   
   UIControlEventAllTouchEvents          = 0x00000FFF,
   UIControlEventAllEditingEvents        = 0x000F0000,
   UIControlEventApplicationReserved     = 0x0F000000,
   UIControlEventSystemReserved          = 0xF0000000,
   UIControlEventAllEvents               = 0xFFFFFFFF 
} UIControlEvents;

现在来谈谈苹果对这件事所做的理论解释。顺便说一句,我不是在解释所有事件,而是仅考虑您的要求。

  1. UIControlEventTouchDragEnter - 手指被拖入控件边界的事件。(希望你知道framesbounds 之间的区别)

  2. UIControlEventTouchDragInside - 手指在控件边界内拖动的事件。

  3. UIControlEventTouchUpInside - 手指在控件边界内的控件中的触摸事件。

    这些都可以从 iOS 2.0 开始。查看TouchUpTouchDrag 之间的区别,这也将帮助您对这些事情有一个清晰的认识。

谢谢, 希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2011-11-18
    • 2021-06-01
    • 2021-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-20
    • 2023-01-26
    • 2011-08-26
    相关资源
    最近更新 更多