Jas*_*ldo 5 objective-c uiscrollview ios
我UIScrollView在自定义类中使用了子类UIView.在该scrollview中,我添加了其他几个自定义对象(所有子类UIView也是如此),如下所示:
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++;
}
Run Code Online (Sandbox Code Playgroud)
然后我试着看到ColorScheme标签做出相应的反应:
- (void)schemeTouchedAtIndex:(UITapGestureRecognizer *)gesture{
CGPoint touchPointInSuperview = [gesture locationInView:self.scrollView];
ColorScheme *touchedView = (ColorScheme *)[self.scrollView hitTest:touchPointInSuperview withEvent:nil];
NSLog(@"%li", (long)touchedView.tag);
}
Run Code Online (Sandbox Code Playgroud)
无论我做什么,它总是将标签记录为零.
几点意见:
ColorScheme添加得很好.tap.cancelsTouchesInView = NO所以UIScrollView不会吞下所有的接触.locationInView我尝试使用self而不是self.scrollView没有运气.同样,它所在的代码在类子类中UIView.难以理解这一点,我们非常感谢任何帮助.
Dav*_*ong 23
-(void)schemeTouchedAtIndex:(UITapGestureRecognizer *)gesture{
NSLog(@"%ld", gesture.view.tag);
}
Run Code Online (Sandbox Code Playgroud)
由于您的手势被挂钩到ColorScheme对象,因此从手势识别器本身抓取视图就不那么容易了.
| 归档时间: |
|
| 查看次数: |
6889 次 |
| 最近记录: |