关于Iphone的手势识别

  以前说过一些关于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



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值