Использование титана NSNotificationCenter с использованием Hyperloop
Я пытаюсь контролировать UIScreenCapturedDidChangeNotification
для записи состояния экрана с помощью гипер-петли в моем приложении Titanium. Я пытался какое-то время, но я не смог найти никаких примеров использования NotificationCenter или addObserver в hyperloop. По сути, я безуспешно пытаюсь привести следующий нативный код в hyperloop:
if (@available(iOS 11.0, *)) {
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(handleScreenCaptureChange)
name:UIScreenCapturedDidChangeNotification object:nil];
}
Вот моя попытка, которая не работает:
//Add event listener to monitor screen recording.
var NotificationCenter = require('Foundation/NSNotificationCenter');
var UIScreenMonitor = Hyperloop.defineClass('UIScreenMonitor', 'NSObject');
UIScreenMonitor.addMethod({
selector : 'handleScreenRecording',
instance : true,
arguments : ['NSNotification'],
callback : function(screen) {
alert('Screen recording changed: '+UIScreen.mainScreen.isCaptured());
console.log('Screen recording changed: ',UIScreen.mainScreen.isCaptured(),screen.isCaptured());
}
});
var screenMonitor = UIScreenMonitor();
NotificationCenter.defaultCenter.addObserverSelectorNameObject(screenMonitor,'handleScreenRecording',UIScreen.UIScreenCapturedDidChangeNotification,null);
0 ответов
Попробуйте изменить несколько вещей:
- Имя селектора в вашем
UIScreenMonitor.addMethod
нужна двоеточие например'handleScreenRecording:'
- Также в вашем
addObserverSelectorNameObject
'вызов функции селектора требует двоеточие, например.'handleScreenRecording:'
- Добавить
'new'
Ключевое слово при создании нового экземпляраUIScreenMonitor
учебный класс. screenMonitor
также должен сохраняться в течение необходимого вам периода времени (т. е. не локальной переменной), если это не так.
Надеюсь, это работает.