uicontrol(UIControl 详细解释)

发布时间:2025-12-10 19:28:57 浏览次数:14

UIControl 详细解释-uicontrol函数matlab

UIControl 详细解释第一:UIControl的继承。UIControl是继承与UIView的。而UIView继承与UIResponder的。然后UIResponder继承与NSObject的。图形解释如下: 第二:UIcontrol的方法详细解释。 一,创建一个继承与UIcontrol的类。// ZSJButton.h

第一 :UIControl 的继承。

UIControl 是继承与 UIView的。而 UIView继承与UIResponder的。然后 UIResponder 继承与 NSObject的。图形解释如下:

第二:UIcontrol 的方法详细解释。

一,创建一个继承与 UIcontrol 的类。

// ZSJButton.h

// 基础(一)

// Created by 周双建 on 16/4/5.

// Copyright © 2016年 周双建. All rights reserved.

#import <UIKit/UIKit.h>

@interface ZSJButton : UIControl{

@public

//标题

UILabel * ZSJButtonTitle;

//图片

UIImageView * ZSJButtonImageView;

}

@end


二,该类的实现。

// ZSJButton.m

// 基础(一)

// Created by 周双建 on 16/4/5.

// Copyright © 2016年 周双建. All rights reserved.

#import “ZSJButton.h”

@implementation ZSJButton

-(instancetype)initWithFrame:(CGRect)frame{

if (self == [super initWithFrame:frame]) {

self.backgroundColor = [[UIColor whiteColor]colorWithAlphaComponent:1.0f];

self.layer.borderWidth = 0.5f;

self.layer.borderColor = [[UIColor lightGrayColor] CGColor];

self->ZSJButtonTitle = [[UILabel alloc]initWithFrame:CGRectMake(4.0f, 4.0f, frame.size.width–8.0f, frame.size.height – 8.0f)];

self->ZSJButtonTitle.text = @”ZSJButton”;

self->ZSJButtonTitle.textColor = [[UIColor blackColor] colorWithAlphaComponent:1.0f];

self->ZSJButtonTitle.font = [UIFont systemFontOfSize:20.0f];

self->ZSJButtonTitle.textAlignment = NSTextAlignmentCenter;

[self addSubview:self->ZSJButtonTitle];

}

return self;

}

// 这是开始启用跟踪事件

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

if (touch.timestamp == 2.0f) {

// 设置点击多长时间,才触发事件

}

if (touch.tapCount == 3) {

// 设置点击的次数,连续点击

}

return [super beginTrackingWithTouch:touch withEvent:event];

}

// 这个是当控件被点击后并在空间上移动,所调用的方法(只要你点击,不放手一直移动,它就会一直调用这个方法,哪怕已经移除控件的大小。)

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

/*

* CGRectInset

* CGRectInset(<#CGRect rect#>, <#CGFloat dx#>, <#CGFloat dy#>)

* 该结构体的应用是以原rect为中心,再参考dx,dy,进行缩放或者放大。

*/

CGRect InRect = CGRectInset(self.bounds, –30.f, –30.f);

/*

* CGRectContainsPoint

* CGRectContainsPoint(<#CGRect rect#>, <#CGPoint point#>)

* 判断给定的点是否被一个CGRect包含

*/

BOOL InView = !CGRectContainsPoint(InRect, [touch locationInView:self]);

if (InView) {

/*

* previousLocationInView

* 该方法记录了前一个坐标值,函数返回也是一个CGPoint类型的值

*/

BOOL OutView = CGRectContainsPoint(InRect, [touch previousLocationInView:self]);

if (OutView) {

[self sendAction:@selector(Tap:withEvent:) to:self forEvent:event];

// you can write your code.(Condition or special function)

}else{

NSLog(@”我已经远离控件了“);

// 传递所有的事件

[self sendActionsForControlEvents:event];

// you can write your code.(Condition or special function)

}

}

return [super continueTrackingWithTouch:touch withEvent:event];

}

-(void)Tap:(id)mytap withEvent:(UIEvent*)event{

NSLog(@”我被移动30px出去了“);

}

// 这是跟踪事件的结束的时候,调用的方法

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

/*

* 事件的类型

typedef NS_ENUM(NSInteger, UIEventType) {

* 手指事件

UIEventTypeTouches,

* 摇动手势

UIEventTypeMotion,

* 远程事件

UIEventTypeRemoteControl,

* 按压事件

UIEventTypePresses NS_ENUM_AVAILABLE_IOS(9_0),

};

*/

switch (event.type) {

case UIEventTypeTouches:

{

//your codes

}

break;

case UIEventTypeMotion:

{

//your codes

}

break;

case UIEventTypeRemoteControl:

{

//your codes

}

break;

case UIEventTypePresses:

{

//your codes

}

break;

default:

break;

}

// 这里可以处理远程事件

switch (event.subtype) {

/*

typedef NS_ENUM(NSInteger, UIEventSubtype) {

// 不包含任何子事件类型

UIEventSubtypeNone = 0,

// 摇晃事件(从iOS3.0开始支持此事件)

UIEventSubtypeMotionShake = 1,

//远程控制子事件类型(从iOS4.0开始支持远程控制事件)

//播放事件【操作:停止状态下,按耳机线控中间按钮一下】

UIEventSubtypeRemoteControlPlay = 100,

//暂停事件

UIEventSubtypeRemoteControlPause = 101,

//停止事件

UIEventSubtypeRemoteControlStop = 102,

//播放或暂停切换【操作:播放或暂停状态下,按耳机线控中间按钮一下】

UIEventSubtypeRemoteControlTogglePlayPause = 103,

//下一曲【操作:按耳机线控中间按钮两下】

UIEventSubtypeRemoteControlNextTrack = 104,

//上一曲【操作:按耳机线控中间按钮三下】

UIEventSubtypeRemoteControlPreviousTrack = 105,

//快退开始【操作:按耳机线控中间按钮三下不要松开】

UIEventSubtypeRemoteControlBeginSeekingBackward = 106,

//快退停止【操作:按耳机线控中间按钮三下到了快退的位置松开】

UIEventSubtypeRemoteControlEndSeekingBackward = 107,

//快进开始【操作:按耳机线控中间按钮两下不要松开】

UIEventSubtypeRemoteControlBeginSeekingForward = 108,

//快进停止【操作:按耳机线控中间按钮两下到了快进的位置松开】

UIEventSubtypeRemoteControlEndSeekingForward = 109,

};

*/

case UIEventSubtypeNone:

{

// your codes

}

break;

case UIEventSubtypeMotionShake:

{

// your codes

}

break;

case UIEventSubtypeRemoteControlPlay:

{

// your codes

}

break;

case UIEventSubtypeRemoteControlPause:

{

// your codes

}

break;

case UIEventSubtypeRemoteControlStop:

{

// your codes

}

break;

case UIEventSubtypeRemoteControlTogglePlayPause:

{

// your codes

}

break;

case UIEventSubtypeRemoteControlNextTrack:

{

// your codes

}

break;

case UIEventSubtypeRemoteControlPreviousTrack:

{

// your codes

}

break;

case UIEventSubtypeRemoteControlBeginSeekingBackward:

{

// your codes

}

break;

case UIEventSubtypeRemoteControlEndSeekingBackward:

{

// your codes

}

case UIEventSubtypeRemoteControlBeginSeekingForward:

{

// your codes

}

case UIEventSubtypeRemoteControlEndSeekingForward:

{

// your codes

}

break;

default:

break;

}

}

/*

// Only override drawRect: if you perform custom drawing.

// An empty implementation adversely affects performance during animation.

– (void)drawRect:(CGRect)rect {

// Drawing code

}

*/

@end


三,该类的使用。

// ViewController.m

// 基础(一)

// Created by 周双建 on 16/4/5.

// Copyright © 2016年 周双建. All rights reserved.

#import “ViewController.h”

#import “ZSJButton.h”

@interface ViewController ()

@property(nonatomic,assign) ZSJButton * MyBtn;

@end

@implementation ViewController

– (void)viewDidLoad {

[super viewDidLoad];

ZSJButton * Btn = [[ZSJButton alloc]initWithFrame:CGRectMake(100, 100, 100, 50)];

_MyBtn = Btn;

// enabled 是控制控件是否可用或者从新绘制等,默认是 YES

Btn.enabled = YES;

// 获取控件是否可用的状态,只读特性

NSLog(@” 按钮的状态:%d”,Btn.isEnabled);

// selected 是设置控件的选中或者不选中

Btn.selected = YES;

//这是控件是否进行事件的跟踪

// 这是 UIControl方法 给控件添加点击方法

[Btn addTarget:self action:@selector(ButClick:) forControlEvents:UIControlEventTouchUpInside];

[Btn addTarget:self action:@selector(ButClick1:) forControlEvents:UIControlEventTouchUpInside];

[Btn addTarget:self action:@selector(ButClick2) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:Btn];

// 获取控件上所有的 Target

NSLog(@”AA:%@”,[Btn allTargets]);

// 获取 指定 tager 上的 所有同一类事件的所有方法

/*

2016-04-05 14:40:01.470 基础(一)[3622:266503] BB:(

“ButClick:”,

“ButClick1:”,

ButClick2

)

从输出的结果看出。方法的写法不同,输出的结果也是不同的。

*/

NSLog(@”BB:%@”,[Btn actionsForTarget:self forControlEvent:UIControlEventTouchUpInside]);

// Do any additional setup after loading the view, typically from a nib.

}

-(void)ButClick:(UIButton*)Btn{

_MyBtn->ZSJButtonTitle.text = @”Tap_One”;

_MyBtn.highlighted = YES;

// 这个方法是移除,添加的一些方法

[_MyBtn removeTarget:self action:@selector(ButClick:) forControlEvents:UIControlEventTouchUpInside];

NSLog(@” 按钮是否开启跟踪状态:%d”,Btn.isTracking);

}

-(void)cancelTrackingWithEvent:(UIEvent *)event{

}

-(void)ButClick1:(id) temp{

}

-(void)ButClick2{

}

– (void)didReceiveMemoryWarning {

[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

@end


需要做网站?需要网络推广?欢迎咨询客户经理 13272073477