Кнопка не реагирует

У меня странное поведение с NSButton. Он работает нормально, пока я не сделаю это вуду где-то еще в своем приложении. Сразу после этого кнопка больше не реагирует на события щелчка. Он по-прежнему выглядит нормально (поэтому не отключен). Он просто ничего не делает, когда я нажимаю на него. Любая идея, где я должен посмотреть в свойствах NSButton, которые могли быть изменены случайно? (Совершенно уверен, что не трогал саму кнопку.)


person qwerty_so    schedule 14.04.2015    source источник
comment
Убедитесь, что кнопка включена   -  person Choppin Broccoli    schedule 15.04.2015
comment
@ChoppinBroccoli Как уже было сказано, он выглядит включенным (не выделен серым цветом).   -  person qwerty_so    schedule 15.04.2015
comment
Что такое voodoo, о котором вы говорите, можете ли вы показать код, который ломает кнопку?   -  person Wez    schedule 15.04.2015
comment
@Wezly К сожалению, это невозможно. Это большое приложение, и это не единственное место, где это происходит. Но всегда на эту единственную кнопку. Есть ли что-нибудь, что могло бы объяснить это странное поведение. Никогда не видел это таким образом.   -  person qwerty_so    schedule 15.04.2015
comment
Я предполагаю, что кнопка либо скрыта за прозрачным изображением, либо косвенно отключена из-за одного из содержащих ее объектов. В нескольких случаях я счел необходимым написать процедуру рекурсивного спуска, чтобы найти, какое изображение скрывает кнопку таким образом.   -  person Hot Licks    schedule 15.04.2015
comment
@HotLicks Скорее маловероятно, но я проверю, что предложит супервизор в своих подвидах.   -  person qwerty_so    schedule 15.04.2015
comment
Я даже проверил рекурсивно из просмотра контента, что ничего не мешает   -  person qwerty_so    schedule 15.04.2015
comment
@Thomas Kilian Вы имеете в виду, что ваша кнопка не воспроизводит флэш-анимацию? Или это не вызывает действия?   -  person SFF    schedule 15.04.2015
comment
@sansof Не мигает. Проверено действие/цель: оба в порядке. Ничего не мешает. Я также переместил кнопку в другое место и создал ее заново. Дергаю себя за волосы :-( Пора спать.   -  person qwerty_so    schedule 15.04.2015


Ответы (3)


Убедитесь, что ваша кнопка находится в «осязаемой» зоне в ее superView. Я имею в виду, что он может быть помещен внутри его границ superView (если нет, вы можете видеть его, в зависимости от свойств отсечения, и вы не можете с ним взаимодействовать). Чтобы проверить это, установите цвет для представления контейнера. Также проверьте, что userInteraction включен...

Надеюсь, поможет.

person Bisca    schedule 14.04.2015
comment
Кнопка находится в стороне от других, которые работают правильно. Что вы имеете в виду под userInteraction? Это не свойство NSButton - person qwerty_so; 15.04.2015
comment
@Bisca можно спутать с iOS UIButton - person Wez; 15.04.2015
comment
Да, я имел в виду UIButton, извините - person Bisca; 15.04.2015

Если ваша кнопка просто не дает анимации, это может быть ошибка Xcode. У меня была похожая проблема раньше, и я зарегистрировал ошибку, и она была исправлена ​​​​в следующей версии Xcode. Проверьте мой вопрос SO. Элемент кнопки панели инструментов не работает должным образом в SplitViewController

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

- (IBAction)buttonAction:(id)sender {

self.button.titleLabel.textColor = [UIColor lightGrayColor];

// Action

self.button.titleLabel.textColor = [UIColor darkTextColor];

// Or with delay
[self performSelector:@selector(changeButtonColor) withObject:nil afterDelay:0.1];
}
person SFF    schedule 14.04.2015
comment
Я использую 6.3. Но это пахнет очередной ошибкой XCODE :-( - person qwerty_so; 15.04.2015

Я понял. Кнопка открыла временное всплывающее окно. Чтобы закрыть это всплывающее окно из-за действия, которое я закодировал

view.window!.orderOut(self)

После его замены на

view.window!.performClose(self)

странный эффект пропал. Я не уверен, но это похоже на ошибку в среде выполнения Swift. Я отчитаюсь и посмотрю, что выйдет.

person qwerty_so    schedule 15.04.2015