objective-c – NSTextField在自定义NSWindow中不可编辑

objective-c – NSTextField在自定义NSWindow中不可编辑,第1张

概述嗨,大家好, 如果我在控制器的视图中创建NSTextField,那么一切都很好 – 该字段是可编辑的. 不幸的是,我必须在新的自定义NSWindow中创建NSTextField.我的代码产生一个看起来没有焦点的字段(文本选择是灰色的)并且不可编辑(没有光标,也没有对键击的反应).我可以用鼠标更改文本选择,但这就是全部. 我是否必须让NSWindow接收击键? 感谢您的帮助, –Josef NSRe 嗨,大家好,

如果我在控制器的视图中创建NSTextFIEld,那么一切都很好 – 该字段是可编辑的.
不幸的是,我必须在新的自定义NSWindow中创建NSTextFIEld.我的代码产生一个看起来没有焦点的字段(文本选择是灰色的)并且不可编辑(没有光标,也没有对键击的反应).我可以用鼠标更改文本选择,但这就是全部.

我是否必须让NSWindow接收击键?

感谢您的帮助,
–Josef

NSRect windowRect = [[self.window contentVIEw] frame] ;      NSWindow* uiWindow          = [[NSWindow alloc]  initWithContentRect:windowRect                    styleMask:NSborderlessWindowMask                    backing:NSbackingStoreBuffered defer:YES];      [uiWindow setBackgroundcolor: [NScolor redcolor/*clearcolor*/]];      [uiWindow setopaque:NO];      NSVIEw* uiVIEw = [[[NSVIEw alloc] initWithFrame:NSMakeRect(0,windowRect.size.wIDth,windowRect.size.height)] autorelease];      [uiVIEw translateOrigintopoint:NSMakePoint(100,uiVIEw.bounds.size.height/2)];      uiVIEw.wantsLayer = YES;      [uiWindow setContentVIEw:uiVIEw];      NSTextFIEld *textFIEld;      textFIEld = [[NSTextFIEld alloc] initWithFrame:NSMakeRect(0,800,80)];      [textFIEld setFont:[NSFont FontWithname:@"Helvetica Bold" size:60]];      [textFIEld setStringValue:@"My Label"];      [textFIEld setBezeled:YES];      [textFIEld setDrawsBackground:YES];      [textFIEld setEditable:YES];      [textFIEld setSelectable:YES];      [textFIEld setEnabled:YES];      [uiVIEw addSubvIEw:textFIEld];// THIS DOES NOT WORK[self.window addChilDWindow:uiWindow ordered:NSWindowAbove];// THIS WORKS//[_graphicVIEw addSubvIEw:uiVIEw];
解决方法 您需要允许自定义窗口成为关键窗口.默认情况下,无边框窗口不能成为密钥.在NSWindow子类中,添加方法canBecomeKeyWindow ::

- (BOol)canBecomeKeyWindow{    return YES;}

你可以检查你的无边框窗口是否是关键窗口:

if([uiWindow isKeyWindow] == TRUE) {    NSLog(@"isKeyWindow!");}else {    NSLog(@"It's not KeyWindow!");}

此外,对于接受键事件的无边界窗口,该类应实现acceptFirstResponder并返回YES.

总结

以上是内存溢出为你收集整理的objective-c – NSTextField在自定义NSWindow中不可编辑全部内容,希望文章能够帮你解决objective-c – NSTextField在自定义NSWindow中不可编辑所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1024343.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存