Программируем под IOS
Anonymous
Почему KVO не имеет ответа, в то время как остальная часть кода, кажется, работает и работает без какой -либо ошибки
Сообщение
Anonymous » 29 июн 2025, 06:16
Код: Выделить всё
// Inside root view controller
- (void) play_test_video {
g_video_test = [AVPlayer playerWithURL : file_url];
g_video_controller = [[AVPlayerViewController alloc] init];
g_video_controller.player = g_video_test;
g_video_controller.delegate = self;
[g_video_controller addObserver : self
forKeyPath : @"playbackControlsVisiblility"
options : (NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld)
context : nil];
NSLog(@"... ... * observer * added");
[g_video_test play];
}
- (void) observeValueForKeyPath : (NSString *) key_path
ofObject : (id) object
change : (NSDictionary *) change
context : (void *) context {
NSLog(@"*** *** inside observeValueForKeyPath ... ");
if ([key_path isEqualToString: @"playbackControlsVisibility"]) {
NSLog(@"*** *** video controls appear or disappear");
}
}
- (void) remove_video_window {
g_video_controller = NULL;
g_video_test = NULL;
[g_video_controller
removeObserver : self
forKeyPath : @"playbackControlsVisiblility"
];
}
< /code>
Видео работает OK, без ошибок. Но vemverevalueforkeypath ()
никогда не вызывается.
Если у вас есть какие -либо предложения, пожалуйста, помогите. Вышевой код, протестированный на iPhone Pro Max, под управлением iOS 16.2.
Подробнее здесь:
https://stackoverflow.com/questions/796 ... uns-withou
1751167004
Anonymous
[code]// Inside root view controller - (void) play_test_video { g_video_test = [AVPlayer playerWithURL : file_url]; g_video_controller = [[AVPlayerViewController alloc] init]; g_video_controller.player = g_video_test; g_video_controller.delegate = self; [g_video_controller addObserver : self forKeyPath : @"playbackControlsVisiblility" options : (NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld) context : nil]; NSLog(@"... ... * observer * added"); [g_video_test play]; } - (void) observeValueForKeyPath : (NSString *) key_path ofObject : (id) object change : (NSDictionary *) change context : (void *) context { NSLog(@"*** *** inside observeValueForKeyPath ... "); if ([key_path isEqualToString: @"playbackControlsVisibility"]) { NSLog(@"*** *** video controls appear or disappear"); } } - (void) remove_video_window { g_video_controller = NULL; g_video_test = NULL; [g_video_controller removeObserver : self forKeyPath : @"playbackControlsVisiblility" ]; } < /code> Видео работает OK, без ошибок. Но vemverevalueforkeypath () [/code] никогда не вызывается. Если у вас есть какие -либо предложения, пожалуйста, помогите. Вышевой код, протестированный на iPhone Pro Max, под управлением iOS 16.2. Подробнее здесь: [url]https://stackoverflow.com/questions/79683450/why-kvo-has-no-response-while-the-rest-of-the-code-seems-to-work-and-runs-withou[/url]
0 Ответы
4 Просмотры
Последнее сообщение Anonymous
29 июн 2025, 14:57
0 Ответы
4 Просмотры
Последнее сообщение Anonymous
02 июл 2025, 05:52
0 Ответы
2 Просмотры
Последнее сообщение Anonymous
03 июл 2025, 08:02
0 Ответы
4 Просмотры
Последнее сообщение Anonymous
03 июл 2025, 09:18
0 Ответы
3 Просмотры
Последнее сообщение Anonymous
07 июл 2025, 07:27