我在我的swift ios应用程序中实现socket.io 。 目前在几个面板上我正在监听服务器,并等待传入的消息。 我通过调用每个面板中的getChatMessage函数: func getChatMessage(){ SocketIOManager.sharedInstance.getChatMessage { (messageInfo) -> Void in dispatch_async(dispatch_get_main_queue(), { () -> Void in //do sth depending on which panel user is }) } } 但是我注意到这是一个错误的方法,我需要改变它 – 现在我想要开始只听一次收到的消息,当有消息传来时,把这个消息传给任何监听它的面板。 所以我想通过NSNotificationCenter传入消息。 到目前为止,我能够传递发生的事情的信息,但不传递数据本身。 我是这样做的: NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(ViewController.showSpinningWheel(_:)), name: showSpinner, object: nil) 那么我有一个函数叫做: func showSpinningWheel(notification: NSNotification) { } 任何时候我想打电话给我,我正在做: NSNotificationCenter.defaultCenter().postNotificationName(hideSpinner, object: self) 那么如何传递对象messageInfo并将其包含在被调用的函数中呢?
我正在为Mac OSX的打字导师应用程序工作,即使应用程序没有焦点,也需要将击键转发给它。 有没有办法通过NSDistributedNotificationCenter让系统向应用程序发送按键? 我傻傻地search了自己,还没有find答案… 编辑: 下面的示例代码 。 感谢@ NSGod指向我正确的方向 – 我最终使用方法addGlobalMonitorForEventsMatchingMask:处理程序:,它的工作很好,添加一个全局事件监视器 。 为了完整性,我的实现如下所示: // register for keys throughout the device… [NSEvent addGlobalMonitorForEventsMatchingMask:NSKeyDownMask handler:^(NSEvent *event){ NSString *chars = [[event characters] lowercaseString]; unichar character = [chars characterAtIndex:0]; NSLog(@"keydown globally! Which key? This key: %c", character); }]; 对我来说,棘手的部分是使用块,所以我会给一些描述,以防止任何人的帮助: 关于上面的代码的事情是,这是NSEvent上的所有方法调用 。 该块作为参数直接提供给函数。 你可以想象它像一个内联的委托方法。 只是因为这一段时间才沉迷于我,我将在这里一步一步地努力: [NSEvent addGlobalMonitorForEventsMatchingMask:NSKeyDownMask 这一点是没有问题的。 你正在调用NSEvent的类方法,并告诉它你正在监视哪个事件,在这种情况下NSKeyDownMask。 支持的事件types的掩码列表可以在这里find。 […]
我没有收到MPMoviePlayerController任何通知。 我究竟做错了什么? 我使用以下逻辑。 我开始在UIWebView播放YouTubevideo。 UIWebView调用一个标准的MPMoviePlayerController 。 我不控制MPMoviePlayerController因为我没有实例化MPMoviePlayerController 。 我用自动播放(1秒延迟)运行YouTube剪辑: [self performSelector:@selector(touchInView:) withObject:b afterDelay:1]; 我的代码是: – (void)viewDidLoad { [super viewDidLoad]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(loadStateDidChange:) name:MPMoviePlayerLoadStateDidChangeNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playbackDidFinish:) name:MPMoviePlayerDidExitFullscreenNotification object:nil]; [self embedYouTube]; } – (void)loadStateDidChange:(NSNotification*)notification { NSLog(@"________loadStateDidChange"); } – (void)playbackDidFinish:(NSNotification*)notification { NSLog(@"________DidExitFullscreenNotification"); } – (void)embedYouTube { CGRect frame = CGRectMake(25, 89, 161, 121); NSString […]
我试图通过Objective-C中的NSNotificationCenter发送和接收消息。 但是,我还没有find任何有关如何做到这一点的例子。 你如何通过NSNotificationCenter发送和接收消息?