Probablemente no debería evitar este comportamiento. Es una convención estándar de UI de iPhone, como tocar la barra de estado para desplazarse a la parte superior de una vista de desplazamiento.
Si realmente desea hacerlo, debe implementar el UITabBarController
método de delegado -tabBarController:shouldSelectViewController:
, como se mencionó en mckeed. Sin embargo, si tiene más de cinco pestañas, el selectedViewController
puede ser un controlador de vista que se encuentra en la sección "Más", pero vc
será [UITabBarController moreNavigationController]
. He aquí una aplicación que se encarga de ese caso:
- (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;
}
También recomiendo evitar este comportamiento sin MUCHAS buenas razones. Los usuarios se cabrean cuando un atajo de todo el sistema no está disponible. –