ios开发-事件机制

来源:互联网 发布:淘宝 软件 编辑:程序博客网 时间:2024/06/09 12:15

Android中的onTouch?onClick?

关于控件命名与修改的两种方式:一种在界面使用IBOutlet来拖拽控件,并命名,在使用过程中可以直接使用self.名称.属性来为控件赋值;另一种为控件设置tag,在ViewController.m文件中使用   控件类型* 目标控件=[self.view viewWithTag:设置的tag],目标控件.属性名="",来对控件显示进行修改。

ios中事件处理的三种方式

通过IBAction将控件的指定时间绑定到控制器的制定方法,当该控件上发生该事件时,将会激发控制器的对应方法。

在程序中为UI控件的特定事件绑定事件监听器

对于UI控件的某些生命周期事件,可以直接委托给对应的代理对象处理。

使用详解:1.使用IBAction绑定实现事件处理

添加button,拖拽,选择connection方式为action,命名事件的名称,后再ViewControler.m中重写该点击事件的方法体,实现需要的效果

2.使用代码设置事件处理方法

可以与用户交互的控件大都继承了UIControl基类,该类提供了注册、删除事件处理的方法

addTarget:action:forControlEvents:为当前UIControl控件指定事件注册事件的方法。其中方法中包含的三个参数如下:target--任意对象,该对象的方法作为事件处理的方法;action参数:该参数接受一个SEL参数,代表一个IBAction方法,表明将该IBAction方法作为事件处理方法;forControlEvents:该参数接受一个UIControlEvents类型的枚举值,该枚举值用于指定事件类型,表明为该重类型的事件绑定事件处理方法,该参数可接受的枚举值与事件类型(Touch Up Inside等)存在一一对应关系;

removeTarget:action:forControlEvents:删除当前UIControl控件的指定事件所注册的事件处理方法。

使用,在拖拽时将button不设置为action设置为IBOutlet,后再ViewController.m的viewDidLoad方法中使用[self.控件名 addTarget:self action:@selector(点击事件操作的方法名) forControlEvents:UIControlEventtTouchUpInside];然后写入点击引发的事件的方法。

实例如下:

- (void)viewDidLoad {
    [super viewDidLoad];
    NSLog(@"界面加载完成");
    UILabel* myLab=(UILabel*)[self.view viewWithTag:12];
    myLab.text=@"oh no";
    self.textview.text=@"YES";
    [self.touch addTarget:self action:@selector(Ontouch) forControlEvents:UIControlEventTouchUpInside];
    // Do any additional setup after loading the view, typically from a nib.
}


-(void)Ontouch:(UIButton*)send{
self.textview.text=@"hello";
}

两种方法的区别,IBAction相当于在内部已经定义了这个控件的名称,直接在内部实现了addtarget:.....这个方法,只需重写实现操作的方法即可;使用代码设置则需要制定控件的名称,然后给目标控件添加制定的方法。

0 0