Событие 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];