带有子视图的 UIPinchGestureRecognizer 问题
UIPinchGestureRecognizer questions with subviews
我有以下代码:
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];
那么一切都会正常工作......我可以不只为子视图添加事件吗?
谢谢!
是的,您可以向子视图添加手势。我像下面这样测试了你的代码工作正常。
首先添加委托。
@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");
}
你已经使用了捏合手势,所以你可以像下面这样使用它。
使用Debug view hierarchy查看m_singleView的大小是否为0?如果是这样,需要更改m_singleView的大小,直到您可以触摸它。
我有以下代码:
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];
那么一切都会正常工作......我可以不只为子视图添加事件吗?
谢谢!
是的,您可以向子视图添加手势。我像下面这样测试了你的代码工作正常。
首先添加委托。
@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");
}
你已经使用了捏合手势,所以你可以像下面这样使用它。
使用Debug view hierarchy查看m_singleView的大小是否为0?如果是这样,需要更改m_singleView的大小,直到您可以触摸它。