UIControl

作者: 纳兰沫 | 来源:发表于2019-01-03 15:24 被阅读3次

借鉴作者kirito_song 不是作者原著 来自摘抄

UIControl

  • contentVerticalAlignment
    内容的垂直对齐方式
  • contentHorizontalAlignment
    内容的水平对齐方式
  • effectiveContentHorizontalAlignment
    返回控件内容有效的水平对齐方向
- (void)addTarget:(id)target 
           action:(SEL)action 
 forControlEvents:(UIControlEvents)controlEvents;

target 目标对象 如果是nil 则UIKit会在响应链中一次搜索能够响应action的对象并将消息传递给该对象
action 处理消息的方法选择器 不可为nil
controlEvents 需要处理的事件类型

  • -actionsForTarget:forControlEvent
    返回指定target某个event下所注册的action(字符串)数组
    target 参数不可为nil
  • allControlEvents
    返回控件被注册的事件类型
  • allTargets
    返回所有注册的target
@property(nonatomic, readonly) NSSet *allTargets;

触发操作

  • -sendAction:to:forEvent:
    调用指定target的action
- (void)sendAction:(SEL)action 
                to:(id)target 
          forEvent:(UIEvent *)event;
  • -sendActionsForControlEvents"
    强制调用指定Event事件相关的Target-Action
    遍历控件的Targets和Actions 并为由UIApplication向每个与controlEvents事件相关联的Targets调用sendAction:to:forEvents:方法

事件的跟踪

开始 移动 结束 取消四种状态的获取

  • -beginTrackingWithTouch:withEvent:
    决定控件是否继续跟踪触摸事件
    此值用于更新控件的跟踪属性tracking
    1.返回NO会直接丢弃事件
    如果你想让下方的另一个对象尝试响应
    可以返回YES并重载-sendAction:to:forEvent:并将target参数设置为nil
    2.依赖于touchesBegan:withEvent:这里需要注意 super touchesBegan:withEvent的调用是充分条件 而不是充要条件 不然UIView的覆盖 就不会影响到下方UIButton的点击效果了
    3.触发的事件类型 UIControlEventTouchDown
  • -continueTrackingWithTouch:withEvent:
    触摸事件更新时调用
  • - endTrackingWithTouch:withEvent:
    触摸事件结束时调用
  • - cancelTrackingWithEvent:
    触摸事件被取消时调用

UIButton的事件的详细解析

UIControlEventTouchDown:按钮点下就调用
UIControlEventTouchUpInside:在按钮范围内松开手指调用
UIControlEventTouchUpOutside:在按钮范围外松开手指调用
UIControlEventTouchCancel:按钮touch事件被取消调用
UIControlEventTouchDragInside:点击按钮后,在按钮范围内拖动反复调用
UIControlEventTouchDragOutside:点击按钮后,在按钮范围外拖动反复调用
UIControlEventTouchDragEnter:点按钮后,拖动到按钮范围外又拖动回按钮返回内跨越边界时调用一次
UIControlEventTouchDragExit:点击按钮,从按钮范围内拖动到按钮范围外跨越边界时调用一次

相关文章

网友评论

      本文标题:UIControl

      本文链接:https://www.haomeiwen.com/subject/bmttrqtx.html