Нижняя половина UITabbar не отвечает на клики - PullRequest
0 голосов
/ 19 ноября 2010

Я создал UITabbar с 3 элементами и поместил его в UIScrollView

Когда я нажимаю кнопки панели вкладок, они не отвечают в нижней половине.Верхняя часть работает нормально.При нажатии на область чуть выше панели вкладок вкладки также переключаются.

Что может быть не так?Как я могу исправить это смещение области интерактивных кнопок?

В viewDidLoad:

[super viewDidLoad];
scroll.frame = CGRectMake(0, 20, 320, 460);
scroll.pagingEnabled = YES;
scroll.contentSize = CGSizeMake(320 * 2, 460);
scroll.showsHorizontalScrollIndicator = NO;
scroll.showsVerticalScrollIndicator = NO;
scroll.scrollsToTop = NO;
scroll.delegate = self;
scroll.pagingEnabled = YES; 
viewNavController1 = [[viewNavController1 alloc] init];
ctrl = [[UITabBarController alloc] init];   

ViewController1 *viewC1= [[ViewController1 alloc] initWithNibName:@"ViewController1" bundle:nil];
UINavigationController *control = [[UINavigationController alloc] initWithRootViewController:viewC1];
viewC1.title = @"Title1";
[viewC1 release];

ViewController2 *viewC2 = [[ViewController2 alloc] initWithNibName:@"ViewController2" bundle:nil];
UINavigationController *control2 = [[UINavigationController alloc] initWithRootViewController:viewC2];
viewC2.title = @"Title2";
[viewC2 release];   

UINavigationController *control3 = [[UINavigationController alloc] init];
ViewController3 *viewC3 = [[ViewController3 alloc] initWithNibName:@"ViewController3" bundle:nil];
[control3 pushViewController:viewC3 animated:NO];
viewC3.title = @"Title3";
[viewC3 release];

[ctrl setViewControllers:[NSArray arrayWithObjects:control,control2,control3,nil]];


CGRect frame = scroll.frame;
frame.origin.x = frame.size.width * 0;
frame.origin.y = 0;
viewNavController1.view.frame = frame;

viewC4 = [[ViewController4 alloc] initWithNibName:@"ViewController4" bundle:nil];
[viewNavController1 pushViewController:viewC4 animated:NO];
[scroll addSubview:viewNavController1.view];

frame = scroll.frame;
frame.origin.x = frame.size.width * 1;
frame.origin.y = 0;
ctrl.view.frame = frame;
[scroll addSubview:ctrl.view];

[scroll scrollRectToVisible:CGRectMake(320, 0, 320, 460) animated:NO];  

UITabBarItem *itm = [ctrl.tabBar.items objectAtIndex:0];
itm.image = [UIImage imageNamed:@"img1.png"];

itm = [ctrl.tabBar.items objectAtIndex:1];
itm.image = [UIImage imageNamed:@"img2.png"];

itm = [ctrl.tabBar.items objectAtIndex:2];
itm.image = [UIImage imageNamed:@"img3.png"];
[control release];
[control2 release];
[control3 release];

1 Ответ

2 голосов
/ 03 февраля 2011

Проблема заключалась в том, что у UITabbarController не было добавлено его представление в качестве корневого представления Windows. Что, по-видимому, предполагает. поэтому мне пришлось обмануть его, используя:

[vc setWantsFullScreenLayout:YES];

vc - это основной ViewController, содержащий представление прокрутки, содержащее UITabbarController.

Подробнее см. в UIWindow addSubview .

...