UIPinchGestureRecognizer вопросы с подпредставлениями - PullRequest
0 голосов
/ 27 декабря 2018

У меня есть следующий код:

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];, тогда все будет работать нормально ... я не могу добавить событие только для подпредставления?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 27 декабря 2018

Используйте иерархию представления отладки, чтобы увидеть, равен ли размер m_singleView 0 или нет?Если это так, размер m_singleView нужно менять, пока вы не сможете его коснуться.

0 голосов
/ 27 декабря 2018

Да, вы можете добавить жест к подпредставлению.Я проверил ваш код, как показано ниже работает отлично.

Сначала добавьте делегата.

@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");
}

Вы использовали пинчестер, чтобы использовать его, как показано ниже.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...