Question

I'm making an app for iPhone in Xcode, and It requires a box to follow my finger only on the X axis. I couldn't find any solution online to this, and my coding knowledge isn't that great.

I've been trying to use touchesBegan and touchesMoved.

Could someone please write me up some code please?

Was it helpful?

Solution

First you need the UIGestureRecognizerDelegate on your ViewController.h file:

@interface ViewController : UIViewController <UIGestureRecognizerDelegate>

@end

Then you declare an UIImageView on your ViewController.m, like so, with a BOOL to track if a touch event is occurring inside your UIImageView:

@interface ViewController () {
    UIImageView *ballImage;
    BOOL touchStarted;
}

Then you initialize the UIImageView on viewDidLoad:

- (void)viewDidLoad
{
    [super viewDidLoad];
    UIImage *image = [UIImage imageNamed:@"ball.png"];
    ballImage =  [[UIImageView alloc]initWithImage:image];
    [ballImage setFrame:CGRectMake(self.view.center.x, self.view.center.y, ballImage.frame.size.width, ballImage.frame.size.height)];
    [self.view addSubview:ballImage];
}

After that you can start doing your modifications to what's best for you using these methods:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *touch = [touches anyObject];
    CGPoint touch_point = [touch locationInView:ballImage];

    if ([ballImage pointInside:touch_point withEvent:event])
    {
        touchStarted = YES;

    } else {

        touchStarted = NO;
    }
}

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    if ([touches count]==1 && touchStarted) {
        UITouch *touch = [touches anyObject];
        CGPoint p0 = [touch previousLocationInView:ballImage];
        CGPoint p1 = [touch locationInView:ballImage];
        CGPoint center = ballImage.center;
        center.x += p1.x - p0.x;
        // if you need to move only on the x axis
        // comment the following line:
        center.y += p1.y - p0.y; 
        ballImage.center = center;
        NSLog(@"moving UIImageView...");
    }

} 
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top