UIBarButtonItem не подсвечивается при нажатии на панели инструментов? - PullRequest
5 голосов
/ 17 сентября 2010

Мне нужны две кнопки на левой стороне навигационной панели. Единственный способ, которым я понял, как это сделать, это сначала поместить их в UIToolbar, а затем установить для него leftBarButtonItem.

Если я делаю это, он работает как обычно (вы можете увидеть его подсветкой при нажатии):

UIBarButtonItem* myBtn = [[UIBarButtonItem alloc] initWithTitle:@"Button" style:UIBarButtonItemStyleBordered target:self action:@selector(doSomething:)];

self.navigationItem.leftBarButtonItem = myBtn;

Но если я сделаю это так, действие кнопки все равно произойдет, но подсветки не будет (нет визуальной обратной связи, когда вы нажимаете кнопку):

 NSMutableArray* buttons = [[NSMutableArray alloc] initWithCapacity:2];

 UIBarButtonItem* myBtn = [[UIBarButtonItem alloc] initWithTitle:@"Button" style:UIBarButtonItemStyleBordered target:self action:@selector(doSomething:)];

 UIBarButtonItem* myBtn2 = [[UIBarButtonItem alloc] initWithTitle:@"Button2" style:UIBarButtonItemStyleBordered target:self action:@selector(doSomethingElse:)];

 [buttons addObject:myBtn];
 [buttons addObject:myBtn2];

 UIToolbar* toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 133, 44)];
 [toolbar setItems:buttons animated:NO];
 self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:toolbar];

Есть идеи, почему при нажатии кнопки не подсвечиваются?

Ответы [ 2 ]

1 голос
/ 22 января 2019

В функции выбора (например, doSomething) установите для свойства tintColor кнопки желаемый выделенный цвет, если он нажат, и значение по умолчанию, если он не нажат. И убедитесь, что цвет подсветки вашей кнопки отличается от цвета по умолчанию, чтобы вы знали, что она выделена.

Согласно Apple Docs , функция showsTouchWhenHighlighted:

Логическое значение, определяющее, вызывает ли нажатие кнопки кнопку.

но это только для UIButton. Я не верю, что у UIBarButtonItem есть опция выделения.

Обратите внимание, что UIBarButtonItem наследуется от UIBarItem, который наследуется от NSObject, а не UIButton, поэтому вы можете ожидать другого поведения.

1 голос
/ 09 апреля 2011

Я не думаю, что объект UIBarButtonItem будет подсвечен при касании. Даже для кнопки «Назад» по умолчанию в навигационной панели отсутствует подсветка при касании. Это работает только таким образом. Не уверен, но вы можете попробовать использовать UISegmentedControl с одним сегментом. Это может создать выделенную иллюзию и выглядеть только как кнопка.

...