EditBox在MacOS 10.13上会使整个界面变成白色

使用cocos2dx-3.5开发的Mac应用,有EditBox的界面,一打开整个程序就变成白色背景了
有人同样也遇到了这个问题
http://www.cocoachina.com/bbs/read.php?tid=1728129&page=e&#a

没有找到解决方案,而且我发现只addSubview到glfw上1个原生控件才会出现白屏,貌似当glfw中存在1个以上原生控件就不会出现该问题,猜测可能是glfw的BUG,我自己在UIEditBoxImpl-mac.mm的initWithFrame方法中,在创建NSTextField并addSubview到glfw上的前后,尝试addSubview一个NSView,发现竟然好了,虽然并不清楚原理是什么 = =,基于cocos2dx-3.5,以下附代码。

-(id) initWithFrame: (NSRect) frameRect editBox: (void*) editBox
{
self = [super init];

if (self)
{
    editState_ = NO;
    secure_ = NO;
    self.textField = [[[NSTextField alloc] initWithFrame:frameRect] autorelease];
    self.secureTextField = [[[NSSecureTextField alloc] initWithFrame:frameRect] autorelease];

    //TODO: need to delete hard code here.
    NSFont *font = [NSFont systemFontOfSize:frameRect.size.height*2/3];
    textField_.font = font;
    secureTextField_.font = font;
    
    [self setupTextField:textField_];
    [self setupTextField:secureTextField_];

    self.editBox = editBox;
    self.placeholderAttributes = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                  font, NSFontAttributeName,
                                  [NSColor grayColor], NSForegroundColorAttributeName,
                                  nil];
    [[[self getNSWindow] contentView] addSubview:textField_];
    // 以下为改动
    NSView *view = [[NSView alloc] initWithFrame:NSZeroRect];
    [[[self getNSWindow] contentView] addSubview:view];
}

return self;

}

1赞

该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。