1

UIControl 类的文档

UIControlEventTouchDragInside, UIControlEventTouchDragEnter, 和有什么区别UIControlEventTouchUpInside?一切似乎都一样。

4

1 回答 1

1

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

Apple 使这些东西在structswift 中可用,而对于 Objective-C,它在enum. 这两个都在里面UIControlEvents。以下是您可能会看到的struct& 。enum

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- 手指被拖入控件边界的事件。(我希望你知道和之间的frames区别bounds

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

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

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

谢谢,希望这有帮助。

于 2016-09-08T07:34:56.810 回答