Как программно создать UIButton в iOS 14 в Objective-C?

Я пытаюсь программно создать UIButton в iOS 14 (бета 3) в объекте C. Это то, что я пробовал, но обработчик UIAction никогда не вызывается, когда я нажимаю кнопку:

UIAction *tapAction = [UIAction actionWithHandler:^(UIAction* action){
     NSLog(@"Never gets here");
}];
UIButton *btn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 100, 100) primaryAction:tapAction];

Любые идеи?

2 ответа

Я была такая же проблема. Мне это кажется ошибкой. Попробуйте добавить:

 self.contentView.isUserInteractionEnabled = true

в init(style:reuseIdentifier:), если вы используете настраиваемую ячейку tableview. См. https://developer.apple.com/forums/thread/661508?page=1#636261022 и отличный ответ @OOPer.

Я написал тестовое приложение, которое просто отображает кнопку, и оно работает, поэтому проблема должна быть в другом в моем основном приложении. Спасибо всем.

Вот как я обычно создаю кнопку в Objective-C:

- (void)createButton {
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    button.frame = CGRectMake(0, 0, 50, 100);
    [button addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
}
    
- (void)buttonClicked:(UIButton *)sender {
   // Do your logic here
}

Вы можете прочитать больше здесь: https://developer.apple.com/documentation/uikit/uicontrol/1618259-addtarget

Другие вопросы по тегам