我有一个UIView的自定义子类和一个带有背景图像的全屏UIButton,如图所示,在右侧有 ,有UIImageView和UIImageView对它和其他一些不重要的标签和按钮。重要的是,在UIView上有两个滚动视图,并且在运行时,我在启用了垂直滚动的滚动视图上添加了UIButton(不是小的,200 x 100)。 情况确实非常复杂,所以我会写作物品在不同条件下发生的事情。在我的应用程序中,有10个完整的屏幕,在UIView的自定义子类上,我使用UIPanGestureRecognizer从一个滚动到另一个。我有一个很好的理由不使用scrollview来做这件事。所有的窗口(下面的图片,而不是UIWindow)在一个循环中填充它们的内容,所以它们的运行代码完全相同,并且它们都是从相同的.xib文件创建的。最后的信息,覆盖所有窗口的更大的UIButton对touchupinside有一个动作,滚动视图中的小按钮有自己的touchupinside选择器。uiscrollview和uibutton的行为对于触摸事件是透明的
- 我的一些窗户完美的作品,如果我在屏幕上的任何位置触摸,更大的按键动作被调用,如果我触摸和拖拽,滚动作品和我导航到下一个/上一个窗口,如果我碰在滚动视图中的小按钮上,他们的动作被触发,最后我可以在这些按钮内完美滚动。
- 我的一些窗口,当我尝试滚动滚动视图时,更大的窗口pangesturerecognizer捕获此事件不是小滚动视图,如果我触摸该滚动视图中的小按钮,更大的按钮事件被触发(它通过所有通过uibutton> uiscrollview> uiimageview> uiview在按钮像他们不存在的UIBUTTON)
- 如果我更换正确的容器视图大uibutton上的一些其他位置,它随机运行良好与否,有时其中一个scrollviews工程好,其他不好。
- 它具有一致的行为,如果在一个位置,它的工作原理,它总是有效的,如果不是,它就不会。
- 同样,所有的视图和子类都启用了它们的用户交互,是的,相反已经变得不可行了,因为行为只是根据大的uibutton上的容器视图的位置而改变,并且也根据大的uibuttons背景图像而改变。
- 我已经放置了touchesBegan方法仅用于测试目的,当触摸无法按预期工作时,使用touch.view触发的事件是大按钮的容器,即使我触摸滚动视图中的小按钮。
我已经花了两天时间了,没有结果。什么会导致这种行为?
编辑:krumelur的评论后,我已经改变了我的重点从配置这些意见到我给容器视图的动画,我注意到,问题是关于动画,我添加了代码部分动画所有十个窗口和行为像一个自定义滚动视图。所有窗口都有自定义图层类,当我捕捉到pangesture识别器时,我使用以下代码在屏幕上移动窗口。该代码中的项目是一个包含所有窗口层的数组。动画导致那个奇怪的情况,但我不能找出尚未..
- (void)layoutSublayers {
[super layoutSublayers];
[CATransaction begin];
[CATransaction setDisableActions:YES];
float angleDelta = 2 * M_PI/[items count];
float a = angle;
for (UIBaseLayer *l in items) {
l.position = self.position;
CATransform3D translation = CATransform3DMakeTranslation(cosf(a)*(radius.x), 1.0, (sinf(a)*radius.y) - radius.y*1.0);
float dailyAngle = (M_PI_2 - a);
CATransform3D rotation = CATransform3DMakeRotation(dailyAngle, 0, 1.0, 0);
CATransform3D t = CATransform3DConcat(rotation, translation);
l.transform = t;
a += angleDelta;
}
[CATransaction commit];}
http://img836.imageshack.us/img836/296/screenshot20111215at013.png
我不想让你失望,但我会说你的问题是复杂的方式,对于详尽的答案来说信息太少。有很多事情可能会出现问题,因此无法分辨问题是什么。可能是错误地连线的事件处理程序,混淆了视图的z顺序,UIScrollView的某些属性设置不正确。 我建议调试的基础知识:简化它。分解它。删除不必要的控件重新思考你的设计。重来。 – Krumelur 2011-12-15 01:43:37