光标不会在 NSTextField 中更新,因为它会在调整封闭的 NSWindow 大小时自动调整大小
Cursor doesn't update in NSTextField as it autoresizes when resizing the enclosing NSWindow
我有一个自动调整大小的 NSTextField。它的文字居中。
当我开始在字段中键入内容然后调整封闭的 NSWindow 的大小时,光标停留在原处而不是重新定位到适当的位置:
我还制作了一个 XCode 项目来演示这个问题:
https://www.dropbox.com/sh/cohhmslyl9ti43b/AAC6ULteopsQCMDsEArJU15Ta?dl=0
有人知道这里发生了什么吗?
有趣的问题,我从来没有将自动布局应用于文本字段,所以我自己很好奇。
我的解决方案是监听 NSWindowDelegate
方法,-windowDidResize
。
在那之后,我会检查文本字段是否是第一响应者。如果是,我再次将其设置为第一响应者,这会将光标重置到正确的位置。
代码:
NSResponder *firstResponder = [[NSApp keyWindow] firstResponder];
if ([firstResponder isKindOfClass:[NSText class]] && (NSTextField*)[(NSText *)firstResponder delegate] == self.centeredText) {
[self.centeredText becomeFirstResponder];
}
我重新上传了项目,这样你也可以看看:
https://www.dropbox.com/s/lhsspi5gasbwq8j/CursorDoesNotUpdate%202.zip?dl=0
我有一个自动调整大小的 NSTextField。它的文字居中。
当我开始在字段中键入内容然后调整封闭的 NSWindow 的大小时,光标停留在原处而不是重新定位到适当的位置:
我还制作了一个 XCode 项目来演示这个问题: https://www.dropbox.com/sh/cohhmslyl9ti43b/AAC6ULteopsQCMDsEArJU15Ta?dl=0
有人知道这里发生了什么吗?
有趣的问题,我从来没有将自动布局应用于文本字段,所以我自己很好奇。
我的解决方案是监听 NSWindowDelegate
方法,-windowDidResize
。
在那之后,我会检查文本字段是否是第一响应者。如果是,我再次将其设置为第一响应者,这会将光标重置到正确的位置。
代码:
NSResponder *firstResponder = [[NSApp keyWindow] firstResponder];
if ([firstResponder isKindOfClass:[NSText class]] && (NSTextField*)[(NSText *)firstResponder delegate] == self.centeredText) {
[self.centeredText becomeFirstResponder];
}
我重新上传了项目,这样你也可以看看: https://www.dropbox.com/s/lhsspi5gasbwq8j/CursorDoesNotUpdate%202.zip?dl=0