Я нашел несколько вопросов и ответов здесь, в stackoverflow, для этой проблемы, но ни одно из решений не решило мою проблему.
В моем приложении для iOS есть возможность воспроизводить музыку с помощью хорошего музыкального проигрывателя. Я разработал его с помощью Xcode Interface Builder, вытащил UIView
и изменил его класс на MPVolumeView
. Все работает нормально, когда я отлаживаю свое приложение на своем iPhone 6.
Вот моя проблема: я также перетащил UITapGestureRecognizer
на весь свой вид, который содержит мои элементы управления, такие как
воспроизведение/пауза, следующая/предыдущая дорожка (...)
а также мой MPVolumeView
. Когда я нажимаю на это представление, оно должно исчезать. Затем я добавил UITapGestureRecognizer
к своему UIImageView
, который показывает мое изображение песни. Когда я нажимаю на это изображение, оно должно исчезать в моем представлении со всеми элементами управления в int - это работает правильно.
НО: когда я чуть-чуть сдвигаю ручку ползунка громкости или просто касаюсь ее, вид все равно исчезает. Кажется, мой MPVolumeView
перенаправляет мое прикосновение или что-то в этом роде. Я попытался установить userInteractionEnabled = false
на ползунке громкости, но это не помогло. Я также установил делегат моего распознавателя жестов на self и добавил
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
NSLog(@"tapped");
if([gestureRecognizer.view isMemberOfClass:[UIImageView class]]) {
return true;
}
return false;
}
в мой код, который возвращает true или false, в зависимости от того, какое представление я нажимаю. Когда я обращаюсь к свойству gestureRecognizer.view, оно не распознает мой MPVolumeView, а только UIView в фоновом режиме.
Вот мои два метода, которые запускаются после запуска TapGestureRecognizers
:
- (IBAction)overlayViewTapped:(UITapGestureRecognizer *)sender {
if(sender.state == UIGestureRecognizerStateEnded) {
[UIView animateWithDuration:0.3
delay:0.0
options:UIViewAnimationOptionAllowUserInteraction
animations:^{ self.blackOverlayView.alpha = 0.0; self.normalTimeLabel.alpha = 1.0; }
completion:nil];
}
}
- (IBAction)imageViewTapped:(UITapGestureRecognizer *)sender {
[UIView animateWithDuration:0.3
delay:0.0
options:UIViewAnimationOptionAllowUserInteraction
animations:^{ self.blackOverlayView.alpha = 1.0; self.normalTimeLabel.alpha = 0.0; }
completion:nil];
}
Пожалуйста, помогите мне, я почти схожу с ума с этим ..
EDIT: мой музыкальный проигрыватель выглядит так:
После того, как я нажму в любом месте в представлении (кроме подвидов), представление должно исчезнуть и скрыть все, просто показать обложку песни и текущее прошедшее время. Это будет выглядеть так:
Как я уже сказал, проблема в том, что если я просто коснусь ползунка громкости или немного сдвину его, мой UITapGestureRecognizer
сработает и мой полный вид исчезнет. Как я могу предотвратить это?