iOS UIControl

提要:

UIControl 是基于Target-Action模式的控件的基类

不应该直接使用

继承自UIView

内容:

UIControl可以实现自定义控件,支持 subclass

Apple Doc给extend  UIControl的建议:

1.针对于特定实践,观察or修改(实现想怎么调用就怎么调用),action消息的分发。

2.提供自定义跟踪行为(想让控件有什么样的track行为)

You may want to extend a UIControl subclass
for either of two reasons:

  • To observe or modify the dispatch of action messages to targets for particular events

    To do this, override sendAction:to:forEvent:,
    evaluate the passed-in selector, target object, or UIControlEvents bit
    mask, and proceed as required.

  • To provide custom tracking behavior (for example, to change the highlight appearance)

    To do this, override one or all of the following methods: beginTrackingWithTouch:withEvent:continueTrackingWithTouch:withEvent:endTrackingWithTouch:withEvent:.

代码举例

实现控件点击3才有消息分发即(方法调用)

- (void)sendAction:(SEL)action to:(id)target forEvent:(UIEvent *)event {

if (touchTime == 3) {

touchTime = 0;

if ([target respondsToSelector:action]) {

#pragma clang diagnostic push

#pragma clang diagnostic ignored "-Warc-performSelector-leaks"

[target performSelector:action];

#pragma clang diagnostic pop

}

}

}

- (BOOL)beginTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event {

NSLog(@"%s", __FUNCTION__);

BOOL isBegin = NO;

if (++touchTime < 3) {

isBegin = NO;

} else {

isBegin = YES;

}

return isBegin;

}

- (void)endTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event {

NSLog(@"%s", __FUNCTION__);

}

时间: 2024-08-06 19:58:41

iOS UIControl的相关文章

iOS UIControl 事件的说明(转)

在控件事件中,简单解释下下面几个事件. 说明:由于是在“iOS 模拟器”中测试的,所以不能用手指,只能用鼠标. 1)UIControlEventTouchDown 指鼠标左键按下(注:只是“按下”)的动作 2)UIControlEventTouchDownRepeat 指鼠标左键连续多次重复按下(注:只是“按下”)的动作,比如,鼠标连续双击.三击.…….多次连击. 说明:多次重复按下时,事件序列是这样的: UIControlEventTouchDown -> (UIControlEventTou

ios中UIControl详解

上篇讲到了UITouch和UIEvent事件,简单回顾一下,UIEvent是一系列UITouch的集合,在IOS中负责响应触摸事件.另外还提到了响应者链的概念,在IOS中,所有事件有一个最先响应者,事件可以沿着响应者链向下传递. 接下来是UIControl对象 UIControl是UIView的子类,当然也是UIResponder的子类.UIControl是诸如UIButton.UISwitch.UITextField等控件的父类,它本身也包含了一些属性和方法,但是不能直接使用UIControl

?关于ios中的点赞控件效果的实现--UIControl

关于ios中的点赞控件效果的实现--UIControl 在开发当中,可能很多时候都需要做个点赞的需求,如果用按钮实现,按钮作为一个系统复合控件,外部是一个 View-->UIControl的容器, 内部包含了UILabel和UIImage,以及一些排版规则.用UIButton就很难去做一些在"赞"和"取消赞"切换时的效果. 可是我们又很需要UIButton似的事件响应机制. 怎么办? 对! 就是使用UIControl. UIControl在这里有两个突出的优势

含有按钮的ScrollView在iOS8中无法滚动的解决办法 | ScrollView with UIControl/UIButton subviews not scrollable under iOS 8

转自:http://zcw.me/blogwp/%E5%90%AB%E6%9C%89%E6%8C%89%E9%92%AE%E7%9A%84scrollview%E5%9C%A8ios8%E4%B8%AD%E6%97%A0%E6%B3%95%E6%BB%9A%E5%8A%A8%E7%9A%84%E8%A7%A3%E5%86%B3%E5%8A%9E%E6%B3%95-scrollview-with-uicontroluibutton-subv/ origin:http://stackoverflow

iOS学习之UIControl

一.UIControl初识      1.UIControl是有控制功能的视图(比如UIButton.UISlider.UISegmentedControl等)的父类. 只要跟控制有关的控件都是继承于该类. UIControl这个类通常我们并不直接使用,而是使用其子类. 事件响应的三种形式:基于触摸.基于值.基于编辑: 2.UIControl常用方法 参数说明:target为目标对象:action为方法选择器:controlEvents为触发事件 // 添加一个事件 - (void)addTar

iOS:转载:UIControl的使用

主要功能: UIContol(控件是所有控件的基类 如:(UIButton)按钮主要用于与用户交互,通常情况下我们不会直接使用UIControl,而是子类化它. 常用属性: BOOL enabled 空间默认是启用的,要禁用控件,可以将enabled属性设置为NO,这样将导致控件会略任何触摸控件事件.被禁用后,控件还可以用不同的方式显示自己, 比如变成灰色不可用.由空间的子类完成的,这个属性却存在于UIControl中. 实例演示: UIButton *button = [[UIButton a

UIControl IOS控件编程 及UITextField的讲解

第一部分 UIKit提供了一组控件:UISwitch开关.UIButton按钮.UISegmentedControl分段控件.UISlider滑块.UITextField文本字段控件.UIPageControl分页控件. 控件是对UIView派生类的实用增强及补充,并可以直接附着于导航栏.表格单元,甚至更大的对象. 这些控件的基类均是UIControl,而UIControl派生自UIView类,所以每个控件都有很多视图的特性,包括附着于其他视图的能力.所有控件都拥有一套共同的属性和方法. 所以学

ios控件 UIControl

< UIControl> 1 处理用户事件的控件的基类,如UIButton,UISlider等 2 一般不直接实例化,而是使用他的子类 3 可以通过跟踪触摸事件来设置和获取控件状态,并且这些方法可以被子类继承 //添加一个事件 - (void)addTarget:(id)target action:(SEL)action forControlEvents: (UIControlEvents)controlEvents; //移除一个事件 - (void)removeTarget:(id)tar

IOS开发UI基础UIControl事件

UIControl事件1.UIControlEventTouchDown单点触摸按下事件:用户点触屏幕,或者又有新手指落下的时候. 2.UIControlEventTouchDownRepeat多点触摸按下事件,点触计数大于1:用户按下第二.三.或第四根手指的时候. 3.UIControlEventTouchDragInside当一次触摸在控件窗口内拖动时. 4.UIControlEventTouchDragOutside当一次触摸在控件窗口之外拖动时. 5.UIControlEventTouc