DesignModeler : 设计模式 GestureRecginzer:手势识别
作者:韩俊强
1、第一种设计模式
DelegateViewController.m
- (void)viewDidLoad {
#pragma mark --Target....action 设计模式的方法实现
//改变自身颜色
//改变自身颜色
- (void)changeselfBackground : (ActionView *)view{
}
ActionView.h
@interface ActionView : UIView
//给外界提供一个接口(方法),用来给ActionView 制定事件的响应对象(目标 target),以及target目标响应的方法
- (void)addTarget : (id)target action:(SEL)action;
//给外界提供一个接口(方法),用来给ActionView 制定事件的响应对象(目标 target),以及target目标响应的方法
- (void)addTarget : (id)target action:(SEL)action;
@end
ActionView.m
@interface ActionView ()
{
id _target;//存储传入的响应对象
SEL _action;//存储响应对象执行的方法
}
@end
{
}
@end
@implementation ActionView
- (void)addTarget : (id)target action:(SEL)action{
//此时在这个方法中要把外界传进来的目标对象,和目标对象要执行的方法存储起来
_target = target;
_action = action;
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
//开始触摸,当ActionView 对象接受到触摸事件的时候,自己不处理事件,需要由_target 来处理
}===================================================
2、第二种模式:
使用代理和设计模式,完成touchView的触摸事件的响应操作,其实就是通过这种方式解除 事件和touchView的耦合
TouchView.h
//第一步:制定协议
@class TouchView;
@protocol TouchViewDelegate <</span>NSObject>
@optional
//刚开始触摸的时候让代理对象完成这个方法
@class TouchView;
@protocol TouchViewDelegate <</span>NSObject>
@optional
//刚开始触摸的时候让代理对象完成这个方法
- (void)touchBeganWithTouchView : (TouchView *)touchView;
@end
@interface TouchView : UIView
//第二步:第一代理属性
//第二步:第一代理属性
@end
————————————————————————————
TouchView.m
@implementation TouchView
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
//第六步:让代理对象干活
if ([_delegate respondsToSelector:@selector(touchBeganWithTouchView:)]) {
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
DelegateViewController.m
//第四步:让代理对象遵循协议
@interface DelegateViewController ()<</span>TouchViewDelegate>
@end
@implementation DelegateViewController
- (void)viewDidLoad {
[ super viewDidLoad];
self.view.backgroundColor = [UIColor yellowColor];
TouchView *redView = [[TouchView alloc]initWithFrame:CGRectMake(20, 30, 280, 100)];
redView. backgroundColor = [UIColor redColor];
//第三步:指定代理对象
redView. delegate = self;
[ self.view addSubview:redView];
[redView release];
}
//第五步:实现协议中的方法
@end
@implementation DelegateViewController
- (void)viewDidLoad {
}
//第五步:实现协议中的方法
- (void)touchBeganWithTouchView:(TouchView *)touchView{
======================================================================
3、GestureRecginzer:手势识别
AppDelegate.m
GestureViewController
*gesture = [[
GestureViewController
alloc
]
init
];
——————————————————————
封装颜色随机值文件下载:
http://pan.baidu.com/s/1gdm6JEb
GestureViewController.m
#import
"GestureViewController.h"
#import "UIColor+RandomColor.h"
- (
void
)viewDidLoad {
————————————————————————————
1、轻拍手势
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(handleTap :)];
//配置属性
//设置轻拍手势触发时间所需的轻拍次数
tapGesture.numberOfTapsRequired = 1;//默认为1下
//设置轻拍需要的手指对象个数
#pragma mark 轻拍手势的方法实现
- (void)handleTap : (UITapGestureRecognizer *)tapGesture{
————————————————————————————————————————
2、长按手势
UILongPressGestureRecognizer
#pragma mark 长按手势方法实现
- (void) handleLongPress : (UILongPressGestureRecognizer *)longPress{
//改变手势所在视图的父视图的颜色
//根据手势状态,选择执行相应操作
if (longPress.state == UIGestureRecognizerStateBegan ) {
longPress. view.superview.backgroundColor = [UIColor randomClolor];
}
- (void) handleLongPress : (UILongPressGestureRecogn
}
————————————————————————
3、轻扫手势
UISwipeGestureRecognizer
#pragma mark 轻扫手势方法的实现
- (void)handleSwipe: (UISwipeGestureRecognizer *)swipeGesture{
swipeGesture. view.backgroundColor = [UIColor randomClolor];
- (void)handleSwipe: (UISwipeGestureRecognizer
}
————————————————————————-
4、平移手势UIPanGestureRecognizer
- (void)handlePan : (UIPanGestureRecognizer *)panGesture{
————————————————————————————————
5、捏合手势
UIPinchGestureRecognizer
}
}
————————————————————————————————
6.旋转手势
UIRotationGestureRecognizer
}
——————————————————————————————
7.屏幕边缘手势UIScreenEdgePanGestureRecognizer
- (void) handleScreenGesture : (UIScreenEdgePanGestureRe
=================================================
欢迎学习本文,未经博主允许,禁止转载!