У меня есть UIView с 4 кнопками на нем, а другой UIView поверх представления кнопок. Верхний вид сверху содержит UIImageView с UITapGestureRecognizer на нем.
Поведение, которое я пытаюсь создать, заключается в том, что когда пользователь нажимает UIImageView, он переключается между малым в нижнем правом углу экрана и анимацией, чтобы стать больше. Когда он большой, я хочу, чтобы кнопки в нижнем виде были отключены, а когда они маленькие, а в правом нижнем углу я хочу, чтобы штрихи были переданы кнопкам и чтобы они работали нормально. Я почти там, но я не могу получить штрихи, чтобы перейти к кнопкам, если я не отключу UserInteractions верхнего вида.
У меня это в моем initWithFrame: вид сверху:
// Add a gesture recognizer to the image view
UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imageTapped:)];
tapGestureRecognizer.cancelsTouchesInView = NO;
[imageView addGestureRecognizer:tapGestureRecognizer];
[tapGestureRecognizer release];
и я это мой метод imageTapped::
- (void) imageTapped:(UITapGestureRecognizer *) gestureRecognizer {
    // Toggle between expanding and contracting the image
    if (expanded) {
        [self contractAnimated:YES];
        expanded = NO;
        gestureRecognizer.cancelsTouchesInView = NO;
        self.userInteractionEnabled = NO;
        self.exclusiveTouch = NO;
    }
    else {
        [self expandAnimated:YES];
        expanded = YES;
        gestureRecognizer.cancelsTouchesInView = NO;
        self.userInteractionEnabled = YES;
        self.exclusiveTouch = YES;
    }
}
С приведенным выше кодом, когда изображение велико, кнопки неактивны, когда я касаюсь изображения, которое он сжимает, и кнопки становятся активными. Однако небольшое изображение не получает штрихов и поэтому не расширяется.
Если я установил self.userInteractionEnabled = YES в обоих случаях, изображение будет расширяться и сжиматься при касании, но кнопки никогда не получат прикосновений и действуют так, как будто отключены.
Есть ли прочь, чтобы изображение расширялось и сокращалось при касании, но для кнопок внизу отображались только штрихи, если изображение находится в сжатом состоянии? Я делаю что-то глупое здесь и пропуская что-то очевидное?
Я абсолютно безумен, пытаясь заставить это работать, поэтому любая помощь будет оценена,
Dave
UPDATE:
Для дальнейшего тестирования я переопределил методы touchesBegan: и touchesCancelled: и назвал их супер реализацией на моем представлении, содержащем UIImageView. С приведенным выше кодом touchesCancelled: никогда не вызывается и всегда вызывается touchesBegan:.
Итак, кажется, что представление получает штрихи, они просто не передаются в представление внизу.
UPDATE
Это из-за того, как работает цепочка ответчиков? Моя иерархия просмотров выглядит следующим образом:
VC - View1
     -View2
      -imageView1 (has tapGestureRecogniser)
      -imageView2
     -View3
      -button1
      -button2
Я думаю, что ОС сначала делает hitTest, поскольку говорит, что View2 находится впереди, поэтому он должен получить все касания, и они никогда не передаются в View3, если для параметра UserInteractions не установлено значение NO для View2, и в этом случае изображениеView1 также не может быть получено прикасается. Это как это работает, и есть ли способ, чтобы View2 прошел через него, касается View3?
