UIControl(QMUI)

@interface UIControl (QMUI)

/**
 *  是否接管 UIControl 的 touch 事件。
 *
 *  UIControl 在 UIScrollView 上会有300毫秒的延迟,默认情况下快速点击某个 UIControl,将不会看到 setHighlighted 的效果。如果通过将 UIScrollView.delaysContentTouches 置为 NO 来取消这个延迟,则系统无法判断 touch 时是要点击还是要滚动。
 *
 *  此时可以将 UIControl.qmui_automaticallyAdjustTouchHighlightedInScrollView 属性置为 YES,会使用自己的一套计算方式去判断触发 setHighlighted 的时机,从而保证既不影响 UIScrollView 的滚动,又能让 UIControl 在被快速点击时也能立马看到 setHighlighted 的效果。
 *
 *  @warning 使用了这个属性则不需要设置 UIScrollView.delaysContentTouches。
 */
@property(nonatomic, assign) BOOL qmui_automaticallyAdjustTouchHighlightedInScrollView;

/// 响应区域需要改变的大小,负值表示往外扩大,正值表示往内缩小
@property(nonatomic,assign) UIEdgeInsets qmui_outsideEdge;

/// setHighlighted: 方法的回调 block
@property(nonatomic, copy) void (^qmui_setHighlightedBlock)(BOOL highlighted);

/// 等同于 addTarget:action:forControlEvents:UIControlEventTouchUpInside
@property(nonatomic, copy) void (^qmui_tapBlock)(__kindof UIControl *sender);

@end

Undocumented

  • 是否接管 UIControl 的 touch 事件。

    UIControl 在 UIScrollView 上会有300毫秒的延迟,默认情况下快速点击某个 UIControl,将不会看到 setHighlighted 的效果。如果通过将 UIScrollView.delaysContentTouches 置为 NO 来取消这个延迟,则系统无法判断 touch 时是要点击还是要滚动。

    此时可以将 UIControl.qmui_automaticallyAdjustTouchHighlightedInScrollView 属性置为 YES,会使用自己的一套计算方式去判断触发 setHighlighted 的时机,从而保证既不影响 UIScrollView 的滚动,又能让 UIControl 在被快速点击时也能立马看到 setHighlighted 的效果。

    Warning

    使用了这个属性则不需要设置 UIScrollView.delaysContentTouches。

    Declaration

    Objective-C

    @property (nonatomic) BOOL qmui_automaticallyAdjustTouchHighlightedInScrollView;

    Swift

    var qmui_automaticallyAdjustTouchHighlightedInScrollView: Bool { get set }
  • 响应区域需要改变的大小,负值表示往外扩大,正值表示往内缩小

    Declaration

    Objective-C

    @property (nonatomic) UIEdgeInsets qmui_outsideEdge;

    Swift

    var qmui_outsideEdge: UIEdgeInsets { get set }
  • setHighlighted: 方法的回调 block

    Declaration

    Objective-C

    @property (nonatomic, copy) void (^)(BOOL) qmui_setHighlightedBlock;

    Swift

    var qmui_setHighlightedBlock: ((Bool) -> Void)! { get set }
  • 等同于 addTarget:action:forControlEvents:UIControlEventTouchUpInside

    Declaration

    Objective-C

    @property (nonatomic, copy) void (^)(__kindof UIControl *) qmui_tapBlock;

    Swift

    var qmui_tapBlock: ((UIControl?) -> Void)! { get set }