Обнаружение, когда пользовательская кнопка UIB была нажата - PullRequest
8 голосов
/ 27 октября 2011

Я создал пользовательский UIButton (подкласс UIButton) для своего приложения. В реализации этой кнопки, как бы я изменил цвет фона при нажатии? (Он должен вернуться к нормальному фону при нажатии. В настоящее время я использую Core Graphics для рисования градиентного фона.)

Я попытался выполнить ветвление в drawRect: (проверка self.selected и self.highlighted, но никаких изменений не произошло, поскольку drawRect не вызывается при событии касания.

Любые предложения или примеры кода приветствуются.

1 Ответ

15 голосов
/ 27 октября 2011

Попробуйте позвонить [self setNeedsRedraw] в вашем сенсорном событии.


Аскер предоставил решение, основанное на этом ответе и комментариях ниже.

Решение

Используется:

[self addTarget:self action:@selector(buttonPressed) forControlEvents:UIControlEventTouchDown];
[self addTarget:self action:@selector(buttonDepressed) forControlEvents:UIControlEventTouchUpInside | UIControlEventTouchUpOutside | UIControlEventTouchCancel];

Где селекторы - это пользовательские функции, которые выполняют смену фона.

...