Обнаружение нажатия пользовательской кнопки UIButton

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

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

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


person Evan Mulawski    schedule 26.10.2011    source источник


Ответы (1)


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


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

Решение

Использовал:

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

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

person Micah Hainline    schedule 26.10.2011
comment
Мне нужно зафиксировать это событие касания в реализации кнопки, чтобы установить цвет ее фона. - person Evan Mulawski; 27.10.2011
comment
Вы всегда можете добавить себя в качестве слушателя к своим собственным сенсорным событиям. Попробуйте [self addTarget: self action: @selector(setNeedsRedraw) forControlEvents: UIControlEventTouchDown]; - person Micah Hainline; 27.10.2011
comment
Спасибо. Использование addTarget на self сработало. Я добавил свое фактическое решение к вашему ответу. - person Evan Mulawski; 27.10.2011