Как получить уведомление о NSTextField textDidEndEditing от C ++? - PullRequest
0 голосов
/ 13 мая 2011

У меня есть программа Objective-C ++, которая использует NSSearchField. В частности, NSSearchField обернут в производную QMacCocoaViewContainer (Qt). Как я могу настроить все так, чтобы я мог получать уведомление о textDidEndEditing из сигнала Qt? Нужен ли мне чистый класс Objective-C, который использует NSNotificationCenter?

1 Ответ

0 голосов
/ 13 мая 2011

Если вы работаете на iOS4, похоже, что вместо этого вы можете отправить уведомление в блок. NSNotificationCenter использует этот метод:

- (id)addObserverForName:(NSString *)name object:(id)obj queue:(NSOperationQueue *)queue usingBlock:(void (^)(NSNotification *))block NS_AVAILABLE(10_6, 4_0);

Тогда вы можете сделать что-то вроде:

MyClass.m:

static void (^receiveNote)(NSNotification *) = ^(NSNotification * note)
{
    UITextField * field = [ note object ] ;
    // forward notification to C++ here
} ;

...

@implementation MyClass

...

-(void)setUpNotifications
{
    [ [ NSNotificationCenter defaultCenter ] addObserverForName:UITextFieldTextDidChangeNotification 
                                                         object:self.textField 
                                                          queue:[ NSOperationQueue mainQueue ] 
                                                     usingBlock:receiveNote ] ;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...