我正在编写一个接收OSC消息的应用程序。这是a screenshot。
当我将突出显示的代码放在receivedOSCMessage方法(每次收到消息时调用)时,文本字段不会显示my_textfield.text的更新值,即使它在控制台中打印了正确的值。但是,如果我把它放在ViewDidLoad中,它可以正常工作。可能导致什么?
编辑:receivedOSCMessage是委托方法。
以下是OSCMViewController.h的内容:
#import <UIKit/UIKit.h>
@interface OSCMViewController : UIViewController
@property (retain, nonatomic) IBOutlet UITextField *my_textfield;
@end
Edit2:在笔尖中创建的文本字段。
通过单独的应用程序手动发送消息。
答案 0 :(得分:1)
看起来该方法正在触发,并且消息的内容具有成功表示为字符串的浮点数。您还指出,在viewDidLoad
中设置值时,您可以看到文本字段的内容。
有充分证据表明,在视图准备好之前,receivedMessage方法正在触发。要确认,请在viewDidLoad
和receivedMessage
中添加断点。我的猜测是你会先看到receivedMessage
断点。
另一种可能性是消息接收组件正在从主线程发送委托消息,并且您的UI更新正在被错过。尝试在receivedOSCMessage方法中将代码包装在像这样的主线程块中......
dispatch_async( dispatch_get_main_queue(), ^{
// do the ui work here
my_textfield.text = dat_string;
});