Кнопки UIB внизу UIScrollView не получают прикосновения

StackOverflow https://stackoverflow.com/questions/1401369

  •  05-07-2019
  •  | 
  •  

Вопрос

Я пишу приложение для iPhone с панелью вкладок и панелью навигации. В определенный момент я помещаю экземпляр моего класса DetailsViewController в стек контроллера навигации, чтобы показать его.

Этот контроллер создает свою иерархию представления в коде: свойству view контроллера присвоено значение UIScrollView, которое содержит простой UIView (давайте назовем его " contentView "), размер которого позволяет хранить весь контент в быть показано. В нижней части этого contentView у меня есть четыре кнопки UIB.

Теперь, когда я запускаю приложение (в данный момент в симуляторе) и прокручиваю до нижней части представления, две верхние кнопки реагируют на прикосновения; третья реагирует на прикосновения только в верхней части, а нижняя кнопка вообще не реагирует на прикосновения. При щелчке в различных частях третьей кнопки создается впечатление, что нижние 93 пикселя вида прокрутки не передают сенсорные события в свои подпредставления.

93 является подозрительным: это также комбинированная высота панели вкладок (49 пикселей) и панели навигации (44 пикселя). Тем не менее, панель навигации и панель вкладок находятся за пределами прокрутки. Любые предложения, почему это может происходить?

Вот код, о котором идет речь:

- (void)loadView
{
    CGRect frame = [[UIScreen mainScreen] applicationFrame]; 
    UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:frame];
    scrollView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight);
    scrollView.delegate = self;
    self.view = scrollView;

    UIView *contentView = [[UIView alloc] initWithFrame:scrollView.bounds];
    contentView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight);
    [scrollView addSubview:contentView];

    CGSize viewSize = contentView.bounds.size;
    CGSize size;
    CGFloat y = 0;

    /* Snip creating various labels and image views */

    /* Actions view creates and lays out the four buttons; its sizeThatFits:
    ** method returns the frame size to contain the buttons */

    actionsView = [[PropertyDetailActionsView alloc] initWithFrame:CGRectZero];
    actionsView.autoresizingMask = (UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleWidth);
    actionsView.delegate = self;
    size = [actionsView sizeThatFits:viewSize];
    actionsView.frame = CGRectMake(0, y, size.width, size.height);
    [contentView addSubview:actionsView];
    y += size.height;

    [contentView setFrame:CGRectMake(0, 0, viewSize.width, y)];
    scrollView.contentSize = contentView.frame.size;

    [contentView release];
    [scrollView release];
}
Это было полезно?

Решение

Как я предположил вчера в Twitter, это может быть связано с гибким нижним полем, установленным для ActionsView.

Это предложение не решило проблему, но привело к правильному направлению. При удалении гибкой высоты contentView проблема была исправлена.

Так что, если у кого-то есть подобные проблемы, попробуйте поиграть с вашими автоматически меняющимися масками.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top