I have a UIScrollView
used inside a custom class that subclasses UIView
. Within that scrollview, I have added several other custom objects (all subclassing UIView
as well) like so:
UITapGestureRecognizer *tap;
for (int count = 0; count < ColorSchemeCount; count++) {
//Check for next page first
[self managePageAdditions];
//Set up the scheme
ColorScheme *scheme = [[ColorScheme alloc]
initWithFrame:[self determineSchemeCircleFrameFromCount:pageCheck]
title:[self getColorSchemeTitleFromIndex:pageCheck]
colors:[self getColorSchemeFromIndex:pageCheck]];
scheme.tag = pageCheck;
tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(schemeTouchedAtIndex:)];
tap.cancelsTouchesInView = NO;
[scheme addGestureRecognizer:tap];
[self.scrollView addSubview:scheme];
//See if next pass requires a new page or not
if(pageCheck > 0) needsNextPage = (pageCheck % kSchemesPerPage == 0);
needsNextPage ? pageCheck = 0 : pageCheck++;
}
And then I try to see the ColorScheme
's tag to respond accordingly:
- (void)schemeTouchedAtIndex:(UITapGestureRecognizer *)gesture{
CGPoint touchPointInSuperview = [gesture locationInView:self.scrollView];
ColorScheme *touchedView = (ColorScheme *)[self.scrollView hitTest:touchPointInSuperview withEvent:nil];
NSLog(@"%li", (long)touchedView.tag);
}
And no matter what I seem to do, it always logs the tag as zero.
A couple of observations:
ColorScheme
are being added just fine.tap.cancelsTouchesInView = NO
so the UIScrollView
won't swallow all the touches.locationInView
I have tried using self
instead of self.scrollView
to no luck. Again, the code where this resides is in a class subclassing UIView
.Stumped on this one, any help is much appreciated.
-(void)schemeTouchedAtIndex:(UITapGestureRecognizer *)gesture{
NSLog(@"%ld", gesture.view.tag);
}
Since your gestures are hooked to the ColorScheme object its less hacky to grab the view from the gesture recognizer itself.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With