gpt4 book ai didi

ios - 从 UITapGestureRecognizer 获取对象的标签

转载 作者:可可西里 更新时间:2023-11-01 04:05:41 26 4
gpt4 key购买 nike

我有一个 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++;
}

然后我尝试查看 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);
}

无论我做什么,它总是将标记记录为零

一些观察:

  • 我可以确认标签设置正确,所有 ColorScheme 都添加得很好。
  • 我还有 tap.cancelsTouchesInView = NO,所以 UIScrollView 不会吞下所有触摸。
  • locationInView 中,我尝试使用 self 而不是 self.scrollView,但没有成功。同样,它所在的代码位于 UIView 的子类中。

被这个难住了,非常感谢任何帮助。

最佳答案

-(void)schemeTouchedAtIndex:(UITapGestureRecognizer *)gesture{
NSLog(@"%ld", gesture.view.tag);
}

由于您的手势已 Hook 到 ColorScheme 对象,因此从手势识别器本身获取 View 就不那么麻烦了。

关于ios - 从 UITapGestureRecognizer 获取对象的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20865997/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com