我有一个子类UIScrollView
,它将触摸传递给按钮(UIImageViews
)。
ScrollView
启用了分页功能,并以编程方式分布在2到7页之间。
然而,仅在显示第2页时才会识别触摸。滚动效果很好。
任何想法?
以下是我添加ScrollView时的设置:
lsScroll.pagingEnabled = YES;
[lsScroll setCanCancelContentTouches:NO];
lsScroll.frame = CGRectMake(0, 0, 320, 480);
lsScroll.bounds = CGRectMake(0, 0, 320, 480);
lsScroll.contentSize = CGSizeMake(lsScroll.bounds.size.width, lsScroll.bounds.size.height*maxSection);
[lsScroll setScrollEnabled:YES];
lsScroll.delaysContentTouches = YES;
lsScroll.delegate = self;
lsScroll.bounces = NO;
lsScroll.showsHorizontalScrollIndicator = NO;
lsScroll.showsVerticalScrollIndicator = NO;
lsScroll.clipsToBounds = YES;
(其中maxSection)是一个定义页数的变量
然后以相同的方式添加章节页面:
section1View = [[UIImageView alloc] initWithFrame:self.view.frame];
section1View.bounds = CGRectMake(0, 0, 320, 480);
section1View.frame = CGRectMake(0, 0, 320, 480);
[section1View setBackgroundColor:[UIColor clearColor]];
[lsScroll addSubview:section1View];
section2View = [[UIView alloc] initWithFrame:self.view.frame];
section2View.bounds = CGRectMake(0, 480, 320, 480);
section2View.frame = CGRectMake(0, 480, 320, 480);
[section2View setBackgroundColor:[UIColor clearColor]];
[lsScroll addSubview:section2View];
section3View = [[UIImageView alloc] initWithFrame:self.view.frame];
section3View.bounds = CGRectMake(0, 960, 320, 480);
section3View.frame = CGRectMake(0, 960, 320, 480);
[section3View setBackgroundColor:[UIColor clearColor]];
[lsScroll addSubview:section3View];
更新:UIImageViews
然后被添加到#View的部分,这些是我正在检查触摸的对象。 section2View上的UIImageViews
注册了触摸,但其他部分的任何UIImageViews
都没有注册触摸。
所有内容都能正确显示并且滚动工作的位置正确,如果您在页面/第2部分工作,触摸事件也会起作用 - 但所有其他触摸都会失败。
感谢任何帮助。
更新:这是添加'UIImageViews'的代码。所以你可以看到我已经掌握了一切正确的东西。第一个是第1页上显示的'UIImageViw - 触摸未收到,第二个是第2页上的'UIImageView' - 触摸可以正常工作。
ls1= [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"ls1.png"]];
ls1.center = (CGPoint){ 215, 65 };
ls1.transform = CGAffineTransformMakeScale(0.33,0.33);
[ls1 setUserInteractionEnabled: YES];
[section1View addSubview: ls1];
ls20= [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"ls20.png"]];
ls20.center = (CGPoint){ 215, 615 };
ls20.transform = CGAffineTransformMakeScale(0.33,0.33);
[ls20 setUserInteractionEnabled: YES];
[section2View addSubview: ls20];
这些代码行是使用电子表格中的宏创建的 - 所以我知道它们都是相同的,并且都包含setUserInteractionEnabled。
答案 0 :(得分:1)
section2View是使用UIView
创建的,其余部分是UIImageView
。如果这些图片视图中的userInteractionEnabled
为“否”,则其子视图将不会接收到触摸。