【发布时间】:2013-08-06 00:07:12
【问题描述】:
我有一个视图控制器 (vc1),我在其中添加了另一个视图控制器 (vc2) 作为子视图。当您点击子视图 (vc2) 中包含的视图 (tappingView) 时,将触发 UITapGestureRecognizer。我想在子视图控制器 (vc2) 中处理这个点击,而不是从第一个视图控制器 (vc1) 中处理……但是当我点击我的视图时它一直在崩溃。
这是层次结构总结:
-vc1
--vc2
---点击查看
这是一个代码示例:
ViewController1 (viewDidLoad):
- (void)viewDidLoad
{
ViewController2 *vc2 = [[ViewController2 alloc] init];
[[self view] addSubview:[vc2 view]];
}
ViewController2 (viewDidLoad):
- (void)viewDidLoad
{
UIView *tappingView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 60.0, 80.0)];
[[self view] addSubview:tappingView];
UITapGestureRecognizer *tapGestureRecognize = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapGestureRecognizer:)];
[tappingView addGestureRecognizer:tapGestureRecognize];
}
ViewController2 (singleTapeGestureRecognizer:) :
- (void)singleTapGestureRecognizer:(id)sender {
NSLog(@"Tap gesture");
}
当我单击视图 (tappingView) 时,我不断崩溃 (BAD_ACCESS)。
有人知道为什么吗?
【问题讨论】:
-
使用 - (void)singleTapGestureRecognizer:(UIGestureRecognizer *)sender 代替 - (void)singleTapGestureRecognizer:(id)sender。因为它必须有 UIGestureREcognizer 而不是 id。