如何限制平移手势区域? [英] How to limit pan gesture area?
本文介绍了如何限制平移手势区域?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用 UIImageView
,我正在使用另一个 UIView
矩形。通过将平移手势应用于 UIView
矩形,它也会超出 UIImageView
。我不想被拖出 UIImageView
I am having my UIImageView
onto which I am having another UIView
rectangle. By applying pan gesture to UIView
rectangle it gets outside of UIImageView
also. I don't want to be drag outside of UIImageView
我试过下面的代码,但它不起作用方式
I have tried below code but it is not working that way
-(void)handleMovementView:(UIPanGestureRecognizer *)recognizer
{
CGPoint movement;
if(recognizer.state == UIGestureRecognizerStateBegan || recognizer.state == UIGestureRecognizerStateChanged || recognizer.state == UIGestureRecognizerStateEnded)
{
CGRect rec = recognizer.view.frame;
CGRect imgvw = self.imgViewCrop.frame;
if((rec.origin.x >= imgvw.origin.x && (rec.origin.x + rec.size.width <= imgvw.origin.x + imgvw.size.width)))
{
CGPoint translation = [recognizer translationInView:recognizer.view.superview];
movement = translation;
recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x, recognizer.view.center.y + translation.y);
[recognizer setTranslation:CGPointZero inView:recognizer.view.superview];
[self handleMovementForHandlers:movement];
}
}
}
如果我应用Pan慢慢应用这个条件,但是当我快速移动时它超出了ImageView
If i apply Pan slowly it applies this condition but when i go fast it went outside of ImageView
推荐答案
试试这个
-(void)handleMovementView:(UIPanGestureRecognizer *)recognizer
{
CGPoint movement;
if(recognizer.state == UIGestureRecognizerStateBegan || recognizer.state == UIGestureRecognizerStateChanged || recognizer.state == UIGestureRecognizerStateEnded)
{
CGRect rec = recognizer.view.frame;
CGRect imgvw = self.imgViewCrop.frame;
if((rec.origin.x >= imgvw.origin.x && (rec.origin.x + rec.size.width <= imgvw.origin.x + imgvw.size.width)))
{
CGPoint translation = [recognizer translationInView:recognizer.view.superview];
movement = translation;
recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x, recognizer.view.center.y + translation.y);
rec = recognizer.view.frame;
if( rec.origin.x < imgvw.origin.x )
rec.origin.x = imgvw.origin.x;
if( rec.origin.x + rec.size.width > imgvw.origin.x + imgvw.size.width )
rec.origin.x = imgvw.origin.x + imgvw.size.width - rec.size.width;
recognizer.view.frame = rec;
[recognizer setTranslation:CGPointZero inView:recognizer.view.superview];
[self handleMovementForHandlers:movement];
}
}
}
这篇关于如何限制平移手势区域?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文