Frage

Ich werde Zeitleiste auf mpMediaPlayerController suchen.

Ich habe es mit der undokumentierten Methode -SetCurrentTime von mpMediaPlayerController wie folgt ausprobiert.

[player setCurrentTime:1.f];

Dann stürzt der Apfel mit folgenden ...

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[MPMoviePlayerController setCurrentTime:]: unrecognized selector sent to instance 0x5619fe0'
*** Call stack at first throw:
(
    0   CoreFoundation                      0x00f59be9 __exceptionPreprocess + 185
    1   libobjc.A.dylib                     0x010ae5c2 objc_exception_throw + 47
    2   CoreFoundation                      0x00f5b6fb -[NSObject(NSObject) doesNotRecognizeSelector:] + 187
    3   CoreFoundation                      0x00ecb366 ___forwarding___ + 966
    4   CoreFoundation                      0x00ecaf22 _CF_forwarding_prep_0 + 50
    5   MPlayerExample                      0x0000227d -[MPlayerExampleViewController PauseVideo] + 69
    6   Foundation                          0x000367f6 __NSFireDelayedPerform + 441
    7   CoreFoundation                      0x00f3afe3 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 19
    8   CoreFoundation                      0x00f3c594 __CFRunLoopDoTimer + 1220
    9   CoreFoundation                      0x00e98cc9 __CFRunLoopRun + 1817
    10  CoreFoundation                      0x00e98240 CFRunLoopRunSpecific + 208
    11  CoreFoundation                      0x00e98161 CFRunLoopRunInMode + 97
    12  GraphicsServices                    0x0188e268 GSEventRunModal + 217
    13  GraphicsServices                    0x0188e32d GSEventRun + 115
    14  UIKit                               0x002c642e UIApplicationMain + 1160
    15  MPlayerExample                      0x00001fe4 main + 102
    16  MPlayerExample                      0x00001f75 start + 53
)
terminate called after throwing an instance of 'NSException'
War es hilfreich?

Lösung

Sie können suchen MPMoviePlayerController Verwendung der currentPlaybackTime Eigenschaft, das in der dokumentiert ist MpMediaPlayback -Protokollreferenz.

Ihr Code würde also aussehen wie:

[player setCurrentPlaybackTime:1.0];

Andere Tipps

Es ist eine undokumentierte API ... sie funktioniert nicht garantiert. Tatsächlich sollten Sie es nicht erwarten. Es ist durchaus möglich, dass Apple es aus einem Betriebssystem -Update entfernt hat, und jetzt gibt es die Methode nicht.

Wenn es wichtig ist, passieren Sie es mit einem Schwimmer und ich denke, es erwartet ein Doppel. Deshalb haben Sie Probleme. Wenn Sie jedoch eine App für die Verteilung im App Store schreiben, macht es keinen Sinn, weiter zu untersuchen - Ihre App wird abgelehnt. Apple analysiert den Code nach Einreichung automatisch. Jede Verwendung von nicht öffentlichen APIs führt dazu, dass Ihre App direkt zu Ihnen zurückgeht.

Hier ist ein Code, der für die Suche nach einem Video in mpMovieplayer mit benutzerdefiniertem Slider funktioniert

//create slider  

slider1 = [[UISlider alloc] initWithFrame:CGRectMake(85, 435, 150,30)];
    [slider1 addTarget:self action:@selector(sliderAction:) forControlEvents:UIControlEventValueChanged];
    [slider1 setBackgroundColor:[UIColor clearColor]];
    slider1.minimumValue = 0;
    slider1.continuous = YES;

    [self.view addSubview:slider1];

// Set slider max value as moviePlayerController Total Duration and Current (Set Value ) as slider Value

-(void)sliderAction:(id)sender
{
    UISlider *slider = (UISlider*)sender;
    float value = slider.value;

    slider.maximumValue =  self.moviePlayerController.duration;

    self.moviePlayerController.currentPlaybackTime = value;


}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top