Почему элементы ScrollView, которые не загружаются на главном экране, НЕ нажимаются - PullRequest
0 голосов
/ 22 января 2019

Моя архитектура выглядит следующим образом: CollectionView (у меня 6 коллекций, поэтому у меня есть 6 представлений для их хранения) внутри View внутри StackView (чтобы содержать их все) внутри ScrollView. Все это делается внутри IBuilder, с файлами .xib для каждого VIEW. Затем еще один файл .xib для стека всех представлений. Затем еще один файл .xib для приложения, в котором находится представление прокрутки. Все это загружает и предоставляет правильную информацию.

Моя проблема в том, что каждый cell в каждом collectionView должен быть кликабельным. Только самые верхние views, которые загружаются в начале, кликабельны. Однажды мне нужно прокрутить, чтобы добраться до вида. Я не могу нажать на эти недавно отрендеренные представления.

Что работает для функционирующих видов коллекций:

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {

  NSInteger index = indexPath.section * 2 + indexPath.row;
  HGMeasurementValue *cellData = [self.cells objectAtIndex:index];
  if (cellData.isEnable) {
    [[NSNotificationCenter defaultCenter] postNotificationName:HGEventMeasurementCellCallback object:self userInfo:@{ @"cellData": cellData}];
  }
}

Я пытался:

  • В отладчике didSelectItemAtIndexPath не вызывается для представлений, которые не появляются на экране при первой загрузке, даже после прокрутки назад и вперед. Единственные, которые реагируют на прикосновения, - это первые видимые.

- проверено на iPhoneSE - 2 вида загружаются первыми и могут быть добавлены (другие 4 не отвечают на didSelectItemAtIndexPath)

- проверено на iPhone XR - 3 вида загружаются первыми и могут быть добавлены (другие 3 не отвечают на didSelectItemAtIndexPath)

- (void)ViewDidLoad {
  self.collection.delaysContentTouches = NO;
  self.collection.canCancelContentTouches = NO;
  self.collection.delegate = self;
}

- (void)shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
  return YES;
}

- отключение gestureRecognizer для scrollView (не работает, и я больше не могу прокручивать)

  • Я проверил, есть ли в моих камерах дополнительные распознаватели жестов, которые могли бы съесть, и я не смог их найти.

  • Я видел эту опцию здесь, в SO, и я пытался реализовать ее, но у меня нет предыдущих гаджетов, чтобы применить ее к:

    tapGesture.cancelsTouchesInView = NO;
    
  • Проверил документацию на яблоко для: UIStackView, UIGestureRecognizer и UIScrollView, и я до сих пор не могу понять причину, по которой my views that are not visible when the app loads are not responding to touches.

Существуют ли какие-либо вспомогательные методы / настройки делегатов, которые мне не хватает? Любая причина, по которой вы знаете, почему scroll stack или collectionView не могут быть кликабельными, потому что их нужно было загружать после viewDidLoad или viewDidLayoutSubViews (поскольку только виды, которые еще не видны, не делают не реагирует на прикосновения.)

Любая помощь будет принята с благодарностью!

Спасибо большое!

...