user3731355
user3731355

Reputation: 1

How do I detect the coordinates of a button press on iOS?

So I'm making a minesweeper clone for iOS, and I have an array of UIButtons containing 135 buttons (the minesweeper board). It looks great and theoretically should work great. But I was having trouble detecting which button was being hit. I tried working around the problem by using this code;

    UITouch *touched = [[event allTouches] anyObject];
    CGPoint location = [touched locationInView:touched.view];
    NSLog(@"x=%.2f y=%.2f", location.x, location.y);
    int pointX = location.x;
    int pointY = location.y;

My goal was to grab the coordinates of the touch and then use some basic math to figure out which button was being pressed. However, it doesn't work. At all. No button is pressed, no function runs, essentially nothing happens. I'm left with a minesweeper board that you can't interact with. Any ideas?

Upvotes: 0

Views: 89

Answers (3)

Skyler
Skyler

Reputation: 2864

The UIButton * can be accessed by calling:

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event

on self (a UIView * I imagine). So I suppose you can set the button to the pushed state, and when touchesEnded: is called, set it back.

Upvotes: 0

SpringN
SpringN

Reputation: 954

You could subclass the buttons and then program the what needs to happen when a touch occurs in a button inside of that subclass.

Upvotes: 0

Owen Hartnett
Owen Hartnett

Reputation: 5935

Assign a separate number to the tag of each button. Use the button's target, not the UITouch code. When you get a buttonPress, query the tag.

Upvotes: 1

Related Questions