在子视图中未调用uitapgesturerecognizer



我的场景是,主视图中会有许多子视图,并且在每个子视图上敲击应生成不同的结果。

我的方法是为每个子视图实现自己的TAP识别器,而不是用于主视图具有一个单个TAP识别器并计算用户点击的哪个子视图区域。这是正确且可行的方法吗?

我尝试了这种方法,但似乎不起作用。TAP方法永远不会被调用。我在Stackoverflow上阅读了很多文章,但它们似乎没有帮助。

例如,尽管子视图不是图像视图,但我仍然手动将其userInteractionEnabled属性设置为YES,如某些帖子所建议的那样。但这无济于事。

以下是子视图的主要代码:

- (void) handleOneTap:(UITapGestureRecognizer*)paramSender{
// *** Never gets called
NSUInteger touchCounter = 0; for (touchCounter = 0;
                                  touchCounter < paramSender.numberOfTouchesRequired;
                                  touchCounter++){
    CGPoint touchPoint = [paramSender locationOfTouch:touchCounter
                                               inView:paramSender.view];
    NSLog(@"Touch #%lu: %@",
          (unsigned long)touchCounter+1, NSStringFromCGPoint(touchPoint));
  }
}
- (void)viewDidLoad {
[super viewDidLoad];
_container = [[UIView alloc] initWithFrame:CGRectMake(20, 50, 280, 300)];
[self.view addSubview:_container];
_container.backgroundColor = [UIColor redColor];
_container.opaque = YES;
// setup tap recognizer
self.tapGestureRecognizer = [[UITapGestureRecognizer alloc]
                             initWithTarget:self
                             action:@selector(handleOneTap:)];
self.tapGestureRecognizer.numberOfTouchesRequired = 1;
self.tapGestureRecognizer.numberOfTapsRequired = 1;
self.view.userInteractionEnabled = YES;
self.container.userInteractionEnabled = YES;
[self.view addGestureRecognizer:self.tapGestureRecognizer];
}

任何帮助将不胜感激。

如果要在子视图中添加uigesturerecognizer,则应该这样做:

_container = [[UIView alloc] initWithFrame:CGRectMake(20, 50, 280, 300)]; 
[self.view addSubview:_container];
_container.backgroundColor = [UIColor redColor]; 
_container.opaque = YES;
_container.userInteractionEnabled = YES; 
self.tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleOneTap:)]; 
self.tapGestureRecognizer.numberOfTouchesRequired = 1; 
self.tapGestureRecognizer.numberOfTapsRequired = 1; 
self.view.userInteractionEnabled = YES; 

[_container addGestureRecognizer:self.tapGestureRecognizer];

看起来这个问题不在uitapgesturerecognizer中,但如果您如何添加ViewController的子视图。

添加subviewContoller的正确方法是:

SSubViewController *pvc = [SSubViewController controllerWithSubViewID:0];
[self.view addSubview:pvc.view];
[self addChildViewController:pvc];

在您的ViewController中进行操作,它应该解决您的问题

最新更新