2011-02-06 2 views
6

Я копирую MPMediaPlayerView с помощью AVPlayer, поэтому я могу добавить к нему некоторые функции. Я создал UIView с воспроизведением/паузой, и я показываю его на ощупь, а затем устанавливаю таймер, чтобы скрыть его в соответствии с образцом кода HeadsUpUI. Я добавил MPVolumeView для регулировки громкости.Обнаружение касаний в MPVolumeView

Это прекрасно работает, за исключением того, что, если вы перемещаете объем вокруг, мой родительский вид не знает, что вы все еще взаимодействуете с подвью и скрывается, когда срабатывает таймер. Таким образом, вы все еще настраиваете громкость, но слайдера больше нет.

То, что я хотел бы знать, это когда прикосновение закончилось на вид и все подземелья. Есть ли способ сделать это?

Единственное решение, о котором я могу думать, - это подойти к подзонам MPVolumeView, и когда я нахожу ползунок, наблюдайте за свойством отслеживания, чтобы знать, когда это делается, отслеживание. Но это не позволяет кому-то долго удерживать кнопку на кнопке. Я бы очень хотел найти общее решение.

ТИА

ответ

7

Добавить жест распознаватель в MPVolumeView. Попросите распознавателя жестов вызвать метод, который сбрасывает таймер.

MPVolumeView *volumeView = [[MPVolumeView alloc] initWithFrame:CGRectMake(0, 88, 320, 30)]; 
UIPanGestureRecognizer *recognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(volumeAdjusted:)]; 
recognizer.cancelsTouchesInView = NO;  // this line is VERY important 
[volumeView addGestureRecognizer:recognizer]; 
[self.view addSubview:volumeView]; 
[volumeView release]; 

-(void)volumeAdjusted:(UIGestureRecognizer *)recognizer { 
    // reset timer 
} 
+0

Как насчет for pre 3.2? Расширение MPVolumeView и реализация событий touch *, похоже, не сработают. Есть предположения? – Ephraim

+0

Это отлично работает. Благодарю. Не забывайте, что 'cancelsTouchesInView' –

Смежные вопросы