Подклассификация UIButton для обработки кликов - программирование

Подклассификация UIButton для обработки кликов

Я пытаюсь подклассифицировать UIButton для создания "умнейшей" кнопки, содержащей логику обработки события click.

Каков наилучший способ достичь этого? Нужно ли просто переопределять метод onClick? Или мне нужно зарегистрировать обработчик событий (и если да, то где это должно быть сделано, поскольку существует множество способов инициализации UIButton?)

4b9b3361

Ответ 1

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

// In your UIButton subclass

- (instancetype)initWithFrame:(CGRect)frame {
    self = [super buttonWithType:UIButtonTypeCustom];
    if (self) {
        [self addTarget:self action:@selector(didTouchButton) forControlEvents:UIControlEventTouchUpInside];
    }
    return self;
}

- (void)didTouchButton {
    // do whatever you need to do here
}

Важное примечание: вы не можете использовать [UIButton buttonWithType:] для создания своей кнопки, вы должны использовать init или initWithFrame:. Несмотря на то, что UIButton имеет инициализатор удобства, initWithFrame: по-прежнему является назначенным инициализатором.