У меня есть универсальное приложение для iPhone / iPad, и я хотел иметь настраиваемую панель навигации, в которой верхняя половина панели навигации содержала логотипы наших компаний, а нижняя - стандартную панель навигации.
Я понял, как это сделать, показав код ниже, но моя UIButton "logosButton" не всегда реагирует на нажатие, похоже, что активны только определенные части кнопки, а другие вообще ничего не делают ... Я не могу понять, почему это так.
- (void)viewDidLoad {
[super viewDidLoad];
[[self view] addSubview: navController.view];
float width = IS_IPAD ? 768.0f : 320.0f;
float logosHeight = IS_IPAD ? 20.0f : 20.0f;
float barHeight = IS_IPAD ? 32.0f : 32.0f;
self.navBar = [[UINavigationBar alloc] initWithFrame: CGRectMake(0.0f, logosHeight, width, barHeight)];
UIView *tempView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, width, logosHeight)];
UIButton *logosButton = [[UIButton alloc] init];
[logosButton setBackgroundImage:[UIImage imageNamed:@"logo_bar_alone.png"] forState:UIControlStateNormal];
[logosButton setBackgroundImage:[UIImage imageNamed:@"logo_bar_alone.png"] forState:UIControlStateHighlighted];
[logosButton addTarget:self action:@selector(logosButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
[logosButton setFrame: CGRectMake(0, 0, width, logosHeight)];
[tempView addSubview: logosButton];
[[self view] addSubview: tempView];
[tempView release];
[[self view] addSubview: self.navBar];
self.navItem = [[UINavigationItem alloc] initWithTitle: @"Home"];
[self.navBar pushNavigationItem:self.navItem animated:NO];
}
Метод: logosButtonClicked
срабатывает время от времени, когда я нажимаю на кнопку UIB, но я четко нажимаю на определенные места, где вообще ничего не происходит ...
Очень расстраивает, я не думаю, что вижу образец в отношении того, где он активен, но кто-то может помочь, пожалуйста, здесь?
EDIT
Я думаю, что только что наткнулся на что-то, я изменил кнопку на UIButtonTypeRoundedRect и избавился от изображений (а также сделал его больше), и кажется, что я не могу нажать на нижнюю ИЛИ верхнюю части кнопки, где Кнопка округлена. Таким образом, средняя прямоугольная секция - единственная секция, где я могу щелкнуть ... с чего бы это?
РЕДАКТИРОВАТЬ 2
Для тех, кто рассматривает этот вопрос, пожалуйста, смотрите последние изменения Табера в его ответе. Навигационный контроллер по какой-то причине поглощает прикосновения, и мне нужно выяснить, почему это так, может быть ошибка?