子视图中不调用UITapGestureRecognizer?

时间:2016-06-20 06:34:13

标签: ios objective-c uigesturerecognizer uitapgesturerecognizer

我的场景是主视图中会有很多子视图,点击每个子视图会产生不同的结果。

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

我尝试过这种方法,但似乎没有用。 tap方法永远不会被调用。我阅读了很多关于stackoverflow的文章,但它们似乎没有帮助。

例如,虽然子视图不是图像视图,但我仍然手动将其$thumbnail = wp_get_attachment_image_src( get_post_thumbnail_id( get_the_ID() ), 'single-post-thumbnail' )**[0]**; <?php while ( $query->have_posts() ) : $query->the_post(); $post_meta = $Listing->get_listing_meta(get_the_ID()); $listing_options = (isset($post_meta['listing_options']) && !empty($post_meta['listing_options']) ? $post_meta['listing_options'] : ""); $gallery_images = (isset($post_meta['gallery_images']) && !empty($post_meta['gallery_images']) ? $post_meta['gallery_images'] : ""); $thumbnail = wp_get_attachment_image_src( get_post_thumbnail_id( get_the_ID() ), 'single-post-thumbnail' )[0]; 属性设置为userInteractionEnabled,如某些帖子所示。但这没有帮助。

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

YES

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

如果您想将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];

答案 1 :(得分:0)

看起来这个问题不在UITapGestureRecognizer中,但是如果你从ViewController添加Subview的话。

添加subviewcontoller的正确方法是:

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

在ViewController中执行此操作并解决您的问题