In AcaniUsers
, I've created a grid of ThumbView : UIView
instances inside of a UITableView
. All thumbViews
have a width of kThumbSize
. How do I detect if touches ended inside the same view in which they began?
The following works, but I'm not sure if it's the best way to go about it. I think so though.
Since all thumbViews
have a width of kThumbSize
, just check in touchesEnded
that the x-coordinate of the locationInView
of the UITouch
instance (assuming self.multipleTouchEnabled = NO
) is less than or equal to kThumbSize
. This means the touches ended inside the thumbView
. No need to check the y-coordinate because if the touches move vertically, the tableView
, which contains the thumbViews
, scrolls and the touches are cancelled.
Do the following in ThumbView : UIView
(whose instances are subviews of a UITableView
):
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"touchesEnded %@", touches);
CGPoint touchPoint = [[touches anyObject] /* only one */ locationInView:self];
if (touchPoint.x >= 0.0f && touchPoint.x <= kThumbSize) {
[(ThumbsTableViewCell *)self.superview.superview thumbTouched:self];
}
}
To only register touches on one thumbView
at a time, you also probably want to set self.exclusiveTouch = YES;
in the init
instance method of ThumbView
.