首页 > 解决方案 > 带有子视图的 UIPinchGestureRecognizer 问题

问题描述

我有以下代码:

m_singleView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, nWidth - 1, nHeight - 1)];
m_singleView.backgroundColor = [UIColor clearColor];
UIPinchGestureRecognizer *pinchGesture = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinch:)];
[pinchGesture setCancelsTouchesInView:YES];
[m_singleView addGestureRecognizer:pinchGesture];
[m_singleView setUserInteractionEnabled:YES];
[m_MainView addSubview:m_singleView];

我遇到的问题是由于某种原因捏事件不会触发。但是,如果我将线路从[m_singleView addGestureRecognizer:pinchGesture]改为 ,[m_MainView addGestureRecognizer:pinchGesture];那么一切都会正常工作......我不能只为子视图添加事件吗?

谢谢!

标签: iosobjective-cuigesturerecognizer

解决方案


是的,您可以向子视图添加手势。我测试了你的代码,如下所示。

首先添加委托。

@interface ViewController : UIViewController<UIGestureRecognizerDelegate>

- (void)viewDidLoad {
    [super viewDidLoad];
   
   UIView *m_singleView = [[UIView alloc] initWithFrame:CGRectMake(50, 50, self.view.frame.size.width - 50, self.view.frame.size.height - 50)];
    self.view.backgroundColor=[UIColor greenColor];
    m_singleView.backgroundColor = [UIColor redColor];
    UIPinchGestureRecognizer *pinchGesture = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinch)];
    pinchGesture.delegate=self;
    [pinchGesture setCancelsTouchesInView:YES];
    [m_singleView addGestureRecognizer:pinchGesture];
    [m_singleView setUserInteractionEnabled:YES];
    [self.view addSubview:m_singleView];
}

-(void)pinch{
    NSLog(@"In PInch");
}

你已经使用了 pinchgesture,所以你可以像下面这样使用它。

在此处输入图像描述


推荐阅读