使用方法CGRectContainsPoint关于TouchesMoved的问题

时间:2013-07-23 13:46:14

标签: ios touchesmoved

当我在屏幕上拖动uiimageview时,我的问题就出现了,它被设置为只能在x轴方向上拖动。 代码类型的工作。 uiimageview正在移动,它仅限于x轴,这正是它应该的样子。 但是当你开始在uiimageview的框架外拖动时,它会停止沿着我的手指移动。

这与此方法无关:CGRectContainsPoint。 请记住,在我的代码中这是非常必要的,因为我只想让uiimageview移动,当用户将其设置在它上面时。

如果我没有使用此方法CGRectContainsPoint,即使用户手指不接触图像,图像仍会移动。任何有关这方面的工作都非常感谢。

这是我的代码:

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {

NSLog(@"Touches Moved is running");

UITouch *touch = [[event allTouches] anyObject];
CGPoint location = [touch locationInView:self.view];

if (CGRectContainsPoint(UIImageView, location) && UIImageView >= 40)
{


    NSLog(@"Contains Point UIImageView Center!");

    CGPoint xLocation = CGPointMake(location.x,UIImageView);
    UIImageView = xLocation;

    //here it comes.. big block of code//
    if (location.x <= 40) {

        NSLog(@"Start Dragging Point");

        CGPoint newLocation = CGPointMake(40
                                          , 402);

        UIImageView = newLocation;
    }

    else if(location.x >= 273) {

        NSLog(@"End Dragging Point");

        CGPoint newLocation = CGPointMake(273
                                          , 402);

        UIImageView = newLocation;

    }
}

1 个答案:

答案 0 :(得分:0)

CGRectContainsPoint(UIImageView, location)-(void)touchesMoved:...移至-(void)touchesBegan:...

只在您开始触摸视图内部时,在那里设置一个指向视图的ivar。使用-(void)touchesMoved:...中的这个ivar来无限移动视图。然后,您可以在-(void)touchesEnded:...-(void)touchesCancelled:...中取消设置此变量。