Apple会NSTextView
自动回复页面向上,向下翻页,箭头键等,但主页和结束键不会由NSTextView
自动处理。这没有明显的理由;我刚刚登录了雷达。在他们修复Radar之前,问题是:如何让NSTextView
正确处理这些键?
我只是花了一段时间来搜索这个,并没有在SO或其他地方找到一个好的现代答案,所以我在这里发布我自己的答案只是为了其他人的参考
答案 0 :(得分:0)
执行此操作的错误方法是实现keyDown:
并检查已按下的特定键。这绕过了苹果公司的键绑定机制,它实际上为“滚动到开始”和“滚动到结束”的概念提供了所需的选择器; NSTextView
只是不响应这些选择器。
您需要做的就是在NSTextView子类中添加以下内容:
- (void)scrollToBeginningOfDocument:(id)sender
{
[self scrollRangeToVisible:NSMakeRange(0, 0)];
}
- (void)scrollToEndOfDocument:(id)sender
{
[self scrollRangeToVisible:NSMakeRange([[self string] length], 0)];
}
这会将相关键绑定的NSResponder方法挂钩到NSTextView中的相应操作。 NSResponder上的这些方法似乎从10.6左右就已经公开了,并且在此之前可能已经存在了一段时间,所以这个解决方案应该适用于所有现代系统。