Проблема с кнопкой в ​​левой части панели навигации - PullRequest
3 голосов
/ 18 февраля 2012

У меня есть кнопка на левой стороне панели навигации. У меня также есть кнопка UIB рядом с этой кнопкой.

Теперь, когда я нажимаю кнопку под панелью навигации, во многих случаях нажимается кнопка на панели.

Есть идеи, почему это происходит? Есть предложения?

Спасибо.

image: если вы щелкнете где-нибудь внутри красной кнопки, верхняя левая кнопка навигационной панели все равно будет нажата

enter image description here

код для кнопки навигационной панели:

UIButton *leftButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 25, 25)];
[leftButton setShowsTouchWhenHighlighted:NO];
[leftButton setImage:[UIImage imageNamed:@"deals.png"] forState:UIControlStateNormal];
[leftButton setImage:[UIImage imageNamed:@"deals_down.png"] forState:UIControlStateSelected];
[leftButton setImage:[UIImage imageNamed:@"deals_down.png"] forState:UIControlStateHighlighted];
[leftButton addTarget:self action:@selector(dealsButtonPressed:) forControlEvents:UIControlEventTouchDown || UIControlEventTouchUpInside];
self.navigationItem.leftBarButtonItem =  [[[UIBarButtonItem alloc] initWithCustomView:leftButton] autorelease];
[leftButton release];

Ответы [ 3 ]

12 голосов
/ 09 марта 2012

UINavigationButtons имеют гораздо большую площадь нажатия, чем кажется, Apple сделала это таким образом для простоты использования. Если вы действительно хотите иметь две кнопки, расположенные близко друг к другу, вы должны создать подкласс UINavigationBar, а именно переопределить события касания, получить координаты касания и действовать так, как вам удобно. Подробнее здесь .

2 голосов
/ 15 марта 2012

Обратите внимание, что если Apple увеличила левую кнопку панели навигации (правая - нет), это вопрос юзабилити.Это почти самая нажимаемая кнопка устройства iphone, поэтому у людей есть возможность инстинктивно нажимать кнопку назад (я никогда не смотрю на кнопку, я просто знаю движение).

Имейте в виду, что еслиесли вы уменьшите область касания, у пользователей могут возникнуть трудности с ее достижением.

Моя рекомендация, извините за это, состоит в том, чтобы опустить 3 или 5px вниз на 3 кнопки.

1 голос
/ 11 марта 2012

Похоже, проблема в том, как вы инициализируете экземпляр UIButton. Как правило, мы будем использовать [UIButton buttonWithType:custom]; в вашей ситуации.

Из этого ответа они решили аналогичный вопрос со следующим:

UIImage *myImage = [UIImage imageNamed:@"paw.png"];
UIButton *myButton = [UIButton buttonWithType:UIButtonTypeCustom];
[myButton setImage:myImage forState:UIControlStateNormal];
myButton.showsTouchWhenHighlighted = YES;
myButton.frame = CGRectMake(0.0, 0.0, myImage.size.width, myImage.size.height);

[myButton addTarget:self action:@selector(tapped:) forControlEvents:UIControlEventTouchUpInside];

UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithCustomView:myButton];
self.navigationItem.rightBarButtonItem = rightButton;

[rightButton release];
[myButton release];

Это не код, который вы ищете, но он показывает вам, как правильно создать экземпляр UIButton. Надеюсь, это решит ваши проблемы.

...