1、当为每个按钮都一一拖线实现每一个监听方法,会变得非常繁琐。未解决这个问题,就需要将多个按钮拖到同一个方法上。
2、就是说此方法要处理多个按钮的监听事件,但是每个按钮的监听事件都不相同,要处理每个按钮的不同监听事件就要对各个按钮传来的参数进行区分。Type不要再选择id类型,要选择UIButton。Connection仍然选择Action表示监听方法,Event仍然选Touch Up Inside表示按下按钮后离开即触发事件,Arguments不再选择none,必须选择Sender表示此监听方法有一个类型为UIButton的参数Sender。注意:Type表示是参数Sender的对象类型。监听方法就是根据Sender来判断是哪个按钮分别执行不同的监听方法的。
3、Sender是根据按钮的Tag进行判断的,为按钮添加Tag的方法如下:点击按钮—>在右侧单击属性按钮(铅笔形状)—>在下方的Tag输入框输入不同的整数为绑定多个按钮的监听方法提供区分按钮的标志。
注意:要想让多个按钮用一个监听方法提供不同的事件实现,就必须为这多个按钮分别提供不同的Tag加以区分。在多个按钮的同一个监听方法内区分方法如下:
switch(Sender.tag){
case 10: ………. break;//10与20或别的整数是已经为每个按钮设置的Tag值
case 20: ………. break;
……….
}
即区分的标志:Sender.tag
4、步骤总结如下:
(1)选中第一个按钮,按住crtl键,拖线到控制器的分类即类扩展中,会出现一个对话框:相应属性的选择如下:
Connection:Action 表示为按钮设置监听方法
Name:…表示此监听方法名
Type:UIButton。表示为多个UIButton类型的按钮提供一个UIButton类型的形参Sender用来接收每个UIButton类型。
Event:Touch Up Inside 表示按下后离开即触发事件。
Arguments:表示此监听方法的形参名,类型为Type指针类型。
(2)按相同方法依次拖住每个将要绑定此监听方法的按钮与此方法相关联,到方法的背景颜色变蓝并出现提示“connect Action”提示框松手即关联成功。
(3)分别为绑定此监听方法的多个按钮设置不同的Tag值。
运行结果如下:
2、就是说此方法要处理多个按钮的监听事件,但是每个按钮的监听事件都不相同,要处理每个按钮的不同监听事件就要对各个按钮传来的参数进行区分。Type不要再选择id类型,要选择UIButton。Connection仍然选择Action表示监听方法,Event仍然选Touch Up Inside表示按下按钮后离开即触发事件,Arguments不再选择none,必须选择Sender表示此监听方法有一个类型为UIButton的参数Sender。注意:Type表示是参数Sender的对象类型。监听方法就是根据Sender来判断是哪个按钮分别执行不同的监听方法的。
3、Sender是根据按钮的Tag进行判断的,为按钮添加Tag的方法如下:点击按钮—>在右侧单击属性按钮(铅笔形状)—>在下方的Tag输入框输入不同的整数为绑定多个按钮的监听方法提供区分按钮的标志。
注意:要想让多个按钮用一个监听方法提供不同的事件实现,就必须为这多个按钮分别提供不同的Tag加以区分。在多个按钮的同一个监听方法内区分方法如下:
switch(Sender.tag){
case 10: ………. break;//10与20或别的整数是已经为每个按钮设置的Tag值
case 20: ………. break;
……….
}
即区分的标志:Sender.tag
4、步骤总结如下:
(1)选中第一个按钮,按住crtl键,拖线到控制器的分类即类扩展中,会出现一个对话框:相应属性的选择如下:
Connection:Action 表示为按钮设置监听方法
Name:…表示此监听方法名
Type:UIButton。表示为多个UIButton类型的按钮提供一个UIButton类型的形参Sender用来接收每个UIButton类型。
Event:Touch Up Inside 表示按下后离开即触发事件。
Arguments:表示此监听方法的形参名,类型为Type指针类型。
(2)按相同方法依次拖住每个将要绑定此监听方法的按钮与此方法相关联,到方法的背景颜色变蓝并出现提示“connect Action”提示框松手即关联成功。
(3)分别为绑定此监听方法的多个按钮设置不同的Tag值。
(4)再此监听方法内用Sender.tag取得触发按钮的Tag,区分是哪个按钮,用switch结构进行实现
5、按钮的几个状态(UIButton的状态)
(1)normal(普通状态)
-默认情况下(default)
-对应的枚举常量:UIControlStateNormal
(2)highlighted(高亮状态)
-按钮被按下去的时候(手指还未松开)
-对应的枚举常量:UIControlStateHighlighted
(3)disabled(失效状态,不可用状态)
-如果enabled属性为NO,就是处于disabled状态,代表按钮不可以被点击
-对应的枚举常量:UIControlStateDisabled
具体过程如下:
步骤一如下图:
步骤二如下图:
步骤三如下图:
步骤四如下图:
步骤五如下图:
步骤六,编辑控制器的实现文件,在监听方法内实现相应按钮的触发事件。
//
// ViewController.m
// Button
//
// Created by apple on 15/8/25.
// Copyright (c) 2015年 LiuXun. All rights reserved.
//
#import "ViewController.h"
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIButton *zujian;
- (IBAction)move:(UIButton *)sender;
- (IBAction)Max;
- (IBAction)Min;
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (IBAction)move:(UIButton *)sender {
// 为每个按钮设置不同的tag值,然后在这个方法中就可以根据sender.tag来判断用户当前点击的是哪个按钮
// 1. 获取原始的frame
CGRect originFrame=self.zujian.frame;
// 2.修改frame
switch (sender.tag) {
case 10:
originFrame.origin.y-=10;
break;
case 20:
originFrame.origin.x+=10;
break;
case 30 :
originFrame.origin.y+=10;
break;
case 40 :
originFrame.origin.x-=10;
break;
default:
break;
}
self.zujian.frame=originFrame;
}
- (IBAction)Max {
CGRect frame=self.zujian.frame;
frame.size.height+=10;
frame.size.width+=10;
self.zujian.frame=frame;
}
- (IBAction)Min {
CGRect frame=self.zujian.frame;
frame.size.height-=10;
frame.size.width-=10;
self.zujian.frame=frame;
}
@end
运行结果如下: