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:.....这个方法,只需重写实现操作的方法即可;使用代码设置则需要制定控件的名称,然后给目标控件添加制定的方法。