Событие TouchUpInside пользовательской кнопки не запускается

Событие touchupinside моей пользовательской кнопки не срабатывает, когда я добавляю код в свою пользовательскую кнопку

Примечание: когда я нажимаю на кнопку, этот метод срабатывает, но метод touchUpInside не срабатывает

- (void) touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
    NSLog(@"touchBegan");
    [Singleton playSoundForEvent:Sound_ButtonTap];
}

Если я удаляю приведенный выше код, то работает нормально.

Выше кода причина: я не помещаю звук касания повсюду на touchupinside. Я хотел бы только один код строки во всем проекте.

2 ответа

Решение

Вы забыли звонок super

[super touchesBegan:touches withEvent:event];

Причина, по которой это не работает без вызова super, заключается в том, что кнопка должна регистрировать сенсорные события (touchesBegan, touchesEnded, touchesMoved, touchesCanceled) чтобы иметь возможность сопоставить их UIControlEventи только потом огонь действия с sendAction,

Полный код

- (void) touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
    [super touchesBegan:touches withEvent:event];
    NSLog(@"touchBegan");
    [Singleton playSoundForEvent:Sound_ButtonTap];
}

Пожалуйста, проверьте этот код и протестируйте снова. Надеюсь, он будет работать нормально.

[super touchesBegan:touches withEvent:event];

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