Решение для отслеживания изменений состояния UIButton - PullRequest
0 голосов
/ 25 января 2012

UIButton предоставляет множество зависящих от состояния настроек (изображение, titleColor и т. Д.).Я вручную добавил подпредставление для кнопки, которое будет реагировать на изменения состояния кнопок.Как бы я это сделал?Должен ли я попытаться сопоставить UIControlEvent s с изменениями состояния?

1 Ответ

6 голосов
/ 25 января 2012

Вы можете сделать это, добавив наблюдатели KVO для выбранных и выделенных свойств кнопки, но это намного сложнее, чем создать подкласс UIButton и перегружать методы setSelected и setHighlighted.Вы можете сделать это следующим образом:

//MyCustomButton.h

@interface MyCustomButton : UIButton

@end


//MyCustomButton.m

@implementation MyCustomButton

- (void)setUp
{
    //add my subviews here
}

- (id)initWithFrame:(CGRect)frame
{
    //this is called when you create your button in code
    if ((self = [super initWithFrame:frame]))
    {
        [self setUp];
    }
    return self;
}

- (id)initWithCoder:(NSCoder *)aDecoder
{
    //this is called when you create your button in interface builder
    if ((self = [super initWithCoder:aDecoder]))
    {
        [self setUp];
    }
    return self;
}

- (void)setSelected:(BOOL)selected
{
    super.selected = selected;
    //update my subviews here
}

- (void)setHighlighted:(BOOL)highlighted
{
    super.highlighted = highlighted;
    //update my subviews here
}

@end

Затем вы можете создавать свои пользовательские кнопки в коде или их в конструкторе интерфейса, перетаскивая обычный UIButton на свой вид, а затем устанавливая его класс на * 1008.* в инспекторе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...