以前说过一些关于Iphone手势识别的内容,但是没有具体的写些相关的内容,今天就用手势识别中的两种来简单讲讲
一、我们先说说两个手指的缩放操作:UIPinchGestureRecognizer
1、在viewDidLoad中初始化UIPinchGestureRecognizer对象,并通过view的addGestureRecognizer方法将它添加到view上:
- (void)viewDidLoad {
[self CreateButton];
//pinch
UIPinchGestureRecognizer *pinchGesture = [[UIPinchGestureRecognizer alloc]
initWithTarget:self
action:@selector(pinchGestureHandler:)];
[m_svImageView addGestureRecognizer: pinchGesture];
[pinchGesture release];
[super viewDidLoad];
2、完成其中的action的内容,根据sender的scale来判断是放大还是缩小;
3、之后便根据UIGetsureRecognizerStateEnded来判断手是否离开屏幕,并根据sender的scale来判断是放大还是缩小并将最后的scale值保存到lastScaleView中:
- (IBAction) pinchGestureHandler:(UIGestureRecognizer *)sender
{
lastScaleValue = 1;
CGFloat scalevalue = [(UIPinchGestureRecognizer *)sender scale];
if (scalevalue >1) {
sender.view.transform = CGAffineTransformMakeScale(lastScaleValue + scalevalue, lastScaleValue + scalevalue);
}else {
sender.view.transform = CGAffineTransformMakeScale(lastScaleValue * scalevalue, lastScaleValue * scalevalue);
}
if(sender.state == UIGestureRecognizerStateEnded)
{
if (scalevalue > 1) {
lastScaleValue += scalevalue;
}else {
lastScaleValue *= scalevalue;
}
}
}
4、完成!
5、小常识:在iOS Simulator中,按住Option键拖动鼠标可实现两个手指的触摸;
二、我们再说说长按手指的操作:UILongPressGestureRecognizer
1、和两个手指操作类似,长按手指同样需要在viewDidLoad中对UILongPressGestureRecognizer的对象进行初始化。
2、需要注意的是,我们还需要设置好UILongPressGestureRecognizer对象的长按最短时间、长按时可移动的像素范围、以及长按手指的个数,之后同样通过view的addGestureRecognizer方法将它添加到view中:
- (void)viewDidLoad {
UILongPressGestureRecognizer *longpressGesture = [[UILongPressGestureRecognizer alloc]
initWithTarget:self
action:@selector(longpressGestureHandler:)];
longpressGesture.minimumPressDuration = 1;
longpressGesture.allowableMovement = 15;
longpressGesture.numberOfTouchesRequired = 1;
[m_svImageView addGestureRecognizer:longpressGesture];
[longpressGesture release];
[super viewDidLoad];
}
3、之后同样时完成action的内容,可以使用if(sender.state == UIGestureRecognizerStateBegan)来判断何时触发长按操作:
- (IBAction) longpressGestureHandler: (UILongPressGestureRecognizer *) sender
{
if([(UILongPressGestureRecognizer *)sender state] == UIGestureRecognizerStateBegan)
{
m_imageView.image = m_uiImage;
}
}
4、完成!
三、附6种常用手势:
UITapGestureRecognizer
UIPinchGestureRecognizer
UIRotationGestureRecognizer
UIPanGestureRecognizer
UISwipeGestureRecognizer
UILongPressGestureRecognizer