Вы, вероятно, не должны предотвращать это поведение. Это стандартное соглашение для пользовательского интерфейса iPhone, например нажатие на строку состояния для прокрутки к верхней части представления прокрутки.
Если вы действительно хотите это сделать, вы должны реализовать UITabBarController
метод делегата -tabBarController:shouldSelectViewController:
, как упоминалось в mckeed. Однако если у вас более пяти вкладок, selectedViewController
может быть контроллером представления, который находится в разделе «Дополнительно», но vc
будет [UITabBarController moreNavigationController]
. Вот реализация, которая обрабатывает этот случай:
- (BOOL)tabBarController:(UITabBarController *)tbc shouldSelectViewController:(UIViewController *)vc {
UIViewController *selected = [tbc selectedViewController];
if ([selected isEqual:vc]) {
return NO;
}
if ([vc isEqual:[tbc moreNavigationController]] &&
[[tbc viewControllers] indexOfObject:selected] > 3) {
return NO;
}
return YES;
}