0

当我在屏幕上拖动 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;

    }
}
4

1 回答 1

0

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

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

于 2013-07-23T14:08:46.013 回答