所以,我遍历一个循环并创建UIView
包含UIImageView
s 的 s (这样我就可以有选择地显示任何给定的部分)。这些UIView
s 都存储在一个UIScrollView
.
我将手势识别器添加到UIView
创建它们的循环中的 s 中。
当我运行程序时,只有最初在其中可见的项目才能UIScrollView
识别它们的手势。如果我滚动到以前隐藏的项目,然后点击它们,则什么都不会发生(手势从未被识别或尝试过)。
初始化代码:
UITapGestureRecognizer* gestRec = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleGesture:)];
gestRec.delegate = self;
[imageholder addGestureRecognizer:gestRec];
处理手势的代码:
- (void)handleGesture:(UIGestureRecognizer *)gestureRecognizer
{
float count = [self._imageHolders count];
NSLog(@"handling gesture: %f",count);
while(count--){
UIView* object = (UIView*) [self._imageHolders objectAtIndex:count];
// NSLog(@"Whats going on: %@, %@, %b",object,gestureRecognizer.view, object == gestureRecognizer.view);
if(object == gestureRecognizer.view){
object.alpha = .1;
count = 0;
}
// [object release];
}
}
有任何想法吗?
- - 更新 :
我已经探索了 中的各种可用功能scrollview
,UIView
以及手势识别器,并尝试弄乱边界,以防某些东西被那样切断......有趣的是,如果有一个项目仅部分可见并且您将其移到所以它是完全可见的,只有最初可见的部分才能识别任何手势。
UIKit
我对手势识别器在架构中的工作方式了解得不够多,无法理解这个问题。带有手势的滚动视图的Apple示例似乎没有这个问题,但我找不到任何真正的差异,除了我将我的嵌套UIImageViews
在他们自己的UIViews