2015-02-12 1 views
1

У меня есть простой UITableViewController с NavigationController в качестве контроллера корневого представления. Я добавил «Опции» UIBarButtonItem к панели навигации и меню «Пуск» UIBarButtonItem на панели инструментов, как показано ниже:UIBarButtonItem в навигационной панели подсвечивается при выборе, но UIBarButtonItem в панели инструментов не

enter image description here

. Проблема, которую я испытываю, заключается в том, что кнопка «Параметры» будет подсвечиваться при нажатии, как обычно, UIButton, но кнопка «Пуск» на панели инструментов не работает. Это очень неудобно, так как пользователю очень сложно узнать, нажали ли они кнопку или нет. Такое поведение показано ниже:

Опция Кнопка Не Прессованная:

enter image description here

Опция Кнопка Прессованная:

enter image description here

Start Button Не Прессованная:

enter image description here

Start Button Прессованные:

enter image description here

Я не могу понять, как исправить это поведение. Я действительно проверял, что кнопка «Начать» действительно работает, поэтому проблема подсветки заключается не в том, что кнопка не работает. Кроме того, достаточно интересно, кнопка «Пуск» делает подсвечивается при длительном нажатии.

+0

Взгляните на этот вопрос SO http://stackoverflow.com/questions/8267758/programmatically-highlight-uibarbuttonitem – MendyK

+0

Хотя это ценный ресурс, на самом деле он не затрагивает основную причину проблемы. Я хотел бы знать, почему 'UIBarButtonItem' выделяется автоматически на панели навигации, но не на панели инструментов. – Willis

+2

Привет, Я попытался создать проблему, с которой вы сталкиваетесь. Я добавил панель инструментов и кнопку на панели навигации, и бот становится подсвеченным при нажатии кнопки. Не могли бы вы рассказать мне, как вы добавили кнопку и какое свойство у вас есть кнопка запуска. –

ответ

3

Вы просто Misconfigured в UIbarButtonItem/UIButton в Attributes Inspector Interface Builder.

Нет смысла тратить время на изучение такой тривиальной проблемы, как бы ни запутали ее. Просто удалите эту кнопку «Пуск» и снова отпустите новую панель инструментов. Нет причин для его поведения по-другому, чем кнопка параметров выше.

+0

Просто добавление - у меня такое ощущение, что элемент кнопки «Параметры» имеет тип «Готово», а не «Пользовательский», что может быть, поэтому это не происходит для кнопки «Старт». –

+0

Это будет отлично, но приятное анимированное поведение является стандартным для barbuttonitems, для элементов панели инструментов, а также для uibuttons. Только когда вы начинаете возиться с ними, вы в конечном итоге теряете увядание в анимации с постепенным исчезновением. –

0

Убедитесь, что ваша кнопка инициализирована с состоянием .Default в IB.

Затем убедитесь, что цвет. Состояние текста с высоким освещением отличается от цвета текста .Default.

Включить: показывает касание на ярлыке для тестов.

0

Существует не встроенный способ, но я могу думать о нескольких пользовательских подходах:

  • привязывает кнопку к целевой метод, который переключает все, что кнопка предназначена для переключения и затем изменяет свойство изображения кнопки соответственно. Вы можете использовать 2 изображения один для выбранного состояния по умолчанию.

  • Создайте свой собственный подкласс UIBarButtonItem, который выглядит примерно так:

    @interface CustomBarButtonItem : UIBarButtonItem { 
         BOOL _state; 
         UIImage * selectedImage; 
         UIImage * defaultImage; 
        } 
        - (BOOL)toggleState; 
        @property (nonatomic, retain) UIImage * selectedImage; 
        @property (nonatomic, retain) UIImage * defaultImage; 
        @end 
    
    @implementation CustomBarButtonItem 
    - (BOOL)toggleState { 
        if (_state) { 
         // Switch to Off state 
         self.image = defaultImage; 
        } 
        else { 
         // Switch to On state 
         self.image = selectedImage; 
        } 
        return _state = !_state; 
    } 
    @end 
    
0

- панель инструментов, предназначенная для полупрозрачного? Я подозреваю, что ваша панель навигации и панель инструментов нет.

1

Вам следует изменить тип кнопки от UIButtonTypeCustom до UIButtonTypeSystem.