UIControl笔记

  1. UIControl继承自UIView
  2. UIControl与Target-Action模式
    使用addTarget:action:forControlEvents方法来设置某一个controlEvent对应的方法(action)及要相应这个事件的target。
    target一般是包含uicontrol的rootview对应的vc。
    action有以下三种类型。其中sender对应uicontrol,event对应相应的事件
- (IBAction)doSomething;
- (IBAction)doSomething:(id)sender;
- (IBAction)doSomething:(id)sender forEvent:(UIEvent*)event;
  1. UIControl的State
    UIControl可以同时处于两个状态。链接
  • UIControlStateNormal
    默认状态
  • UIControlStateHighlighted
    触摸事件发生在UIControl内部时,变为高亮态。当在内部touchup或在触摸时间发生在外部时,失去高亮态。是一种非持久态
  • UIControlStateDisabled
    禁止态,不处理触摸事件
  • UIControlStateSelected
    控件被选中,可以持久存在。
  • UIControlStateFocused
  1. 添加target-action
  - (void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents;
  • target
    要被作用的target,即这个target对应的action要被调用。若为nil,那么系统会顺着响应链寻找。
  • action
    要被调用的方法,不能是nil。
  • controlEvents
    可以包含多个controlEvent,即可以同时为多个controlEvent指定事件 。
  1. 移除target-action
  - (void)removeTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents;
  • target 要被移除的target,若为nil,哪么移除对应controlEvent的所有target
  • action 要被移除的action。
  1. 人为触发事件
  • - (void)sendAction:(SEL)action to:(id)target forEvent:(UIEvent *)event;
    对指定的target调用指定的action。event可以为nil。
  • - (void)sendActionsForControlEvents:(UIControlEvents)controlEvents;
    遍历这个UIControl的所有target,若对controlEvent指定了对应的action,调用上一个方法。
  1. 状态循环
    一般如果是由Touch Up Inside触发的事件:
  • 手指按到控件,UIControl更新ControlState到Highlighted
  • 手指离开控件,一般UIControl更新ControlState到Selected
  • Highlighted -> Selected之后的状态取决于具体的UIControl子类,其实连UITableViewCell也有这三种状态,Cell还是UIView的子类,这种特殊的状态默认就不会更新回Normal了~
  • 至于在UIbutton中,那就是非常自然的时序:Normal -> Highlighted -> Selected -> Normal啦。

链接:https://www.zhihu.com/question/25284619/answer/30370393

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 好奇触摸事件是如何从屏幕转移到APP内的?困惑于Cell怎么突然不能点击了?纠结于如何实现这个奇葩响应需求?亦或是...
    Lotheve阅读 58,301评论 51 603
  • 我们在开发应用的时候,经常会用到各种各样的控件,诸如按钮(UIButton)、滑块(UISlider)、分页控件(...
    傻傻小萝卜阅读 701评论 0 1
  • http://www.cocoachina.com/cms/wap.php?action=article&id=1...
    Kevin追梦先生阅读 1,081评论 0 3
  • 在iOS开发中经常会涉及到触摸事件。本想自己总结一下,但是遇到了这篇文章,感觉总结的已经很到位,特此转载。作者:L...
    WQ_UESTC阅读 6,146评论 4 26
  • 育君老师,谢谢您,祝福您,感恩您,我爱您。五福之旅,我感受到了太多太多,不仅是对五福得认识,更是内心的一种彻底改变...
    大方demi阅读 181评论 0 0