Sie sollten dieses Verhalten wahrscheinlich nicht verhindern. Es ist eine Standardkonvention für iPhone-Benutzeroberflächen, wie das Tippen auf die Statusleiste, um zum Anfang einer Bildlaufansicht zu blättern. Wenn Sie es wirklich wollen, sollten Sie die UITabBarController
Delegate-Methode -tabBarController:shouldSelectViewController:
implementieren, wie mckeed erwähnt. Wenn Sie jedoch über mehr als fünf Registerkarten verfügen, ist der selectedViewController
möglicherweise ein Ansichtscontroller, der sich im Abschnitt "Weitere Informationen" befindet, aber vc
ist [UITabBarController moreNavigationController]
. Hier ist eine Implementierung, die diesen Fall behandelt:
- (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;
}
Ich empfehle auch nicht, dieses Verhalten ohne sehr gute Gründe zu verhindern. Benutzer werden sauer, wenn eine systemweite Verknüpfung nicht verfügbar ist. –