Я пишу приложение для 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];
}