Awa*_*ain 1 iphone uiscrollview uigesturerecognizer ios
我有一个子类UIView,让我们称之为TileView.m/h.
在TileView.m,我有以下代码:( [setup]肯定被调用,我检查断点).
- (void)setup {
self.userInteractionEnabled = YES;
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(testPressed:)];
[self addGestureRecognizer:tap];
}
- (void)testPressed:(UITapGestureRecognizer *)sender {
NSLog(@"tap pressed");
}
Run Code Online (Sandbox Code Playgroud)
出于某种原因,testPressed当我点击视图时,不会调用该方法!
奇怪的是,如果我将TileView类复制到一个空白的xCode项目并在那里设置它,一切都很好.这是特殊的,因为手势首先由子视图处理,然后由超级视图处理 - 因此tile类不应受其超级视图的影响.此外,手势完全包含在TileView课程中.
作为参考,tile视图嵌套在:
Controller -> controller's view -> scroll view -> container view -> tile viewpattern中.
我试过没有成功:
tap.delegate = self然后gestureRecognizer:shouldRecognizeSimultaneously...始终实施return YES;没运气 :/
还有什么想法可能会出错?或者我可以运行哪些测试来更详细地了解问题?
编辑:更多细节
回想一下,tile视图嵌套在: Controller -> controller's view -> scroll view -> container view -> tile view
如果我在控制器文件中添加手势识别器:
[self.view addGestureRecognizer:tap]
Run Code Online (Sandbox Code Playgroud)
然后[self.view hitTest:[sender locationInView:self.view] withEvent:nil];在事件处理程序中使用,我可以看到返回的视图是a UIScrollView而不是TileView预期的.
此外,添加手势识别器self.scrollView代替工作正常,但如果我将其添加到self.containerView(这是唯一的子视图scrollView)停止工作.containerView有userInteractionEnabled = YES.
如果视图包含UIImageViews的子视图,请记住必须显式设置userInteractionEnabled为YES(默认值为NO).
如果没有,图像视图将阻止点击到达超级视图.
另外,请记住设置触摸次数.
| 归档时间: |
|
| 查看次数: |
2507 次 |
| 最近记录: |