cocoa – 即使设置了可编辑行为,也无法在NSPopover上编辑NSTextField

cocoa – 即使设置了可编辑行为,也无法在NSPopover上编辑NSTextField,第1张

概述我有一个应用程序,它使用NSTextField打开popover.文本字段不可编辑.文本字段的行为设置为可编辑.我仍然可以粘贴和复制文本到这个字段,但我无法编辑它. 谁知道,哪有什么不对? 不确定你是否仍然需要答案,但可能还有其他人仍在寻找.我在apple开发者论坛上找到了解决方案.引用原作者: 主要问题是键盘事件的工作方式.虽然NSTextField(及其所有超级视图)都会收到键盘事件,但它不会 我有一个应用程序,它使用NSTextFIEld打开popover.文本字段不可编辑.文本字段的行为设置为可编辑.我仍然可以粘贴和复制文本到这个字段,但我无法编辑它.

谁知道,哪有什么不对?

解决方法 不确定你是否仍然需要答案,但可能还有其他人仍在寻找.我在apple开发者论坛上找到了解决方案.引用原作者:

主要问题是键盘事件的工作方式.虽然NSTextFIEld(及其所有超级视图)都会收到键盘事件,但它不会执行任何 *** 作.发生这种情况是因为d出窗口所在的视图位于一个不能成为关键窗口的窗口中.你不能以任何方式访问该窗口,至少我不能.因此,解决方案是使用类别覆盖我们应用程序中每个NSWindow的方法canBecomeKeyWindow.

NSWindow+canBecomeKeyWindow.h@interface NSWindow (canBecomeKeyWindow)@endNSWindow+canBecomeKeyWindow.m@implementation NSWindow (canBecomeKeyWindow)//This is to fix a BUG with 10.7 where an NSPopover with a text fIEld cannot be edited if its parent window won't become key//The pragma statements disable the corresponding warning for overrIDing an already-implemented method#pragma clang diagnostic push#pragma clang diagnostic ignored "-Wobjc-protocol-method-implementation"- (BOol)canBecomeKeyWindow{    return YES;}#pragma clang diagnostic pop@end

这使得d出窗口完全受到重视.如果你需要另一个窗口,它必须对canBecomeKeyWindow响应NO,你总是可以创建一个子类.

总结

以上是内存溢出为你收集整理的cocoa – 即使设置了可编辑行为,也无法在NSPopover上编辑NSTextField全部内容,希望文章能够帮你解决cocoa – 即使设置了可编辑行为,也无法在NSPopover上编辑NSTextField所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存