苹果使NSTextView自动响应页面向上、页面向下、箭头键等,但NSTextView不自动处理主键和结束键。没有明显的理由;我只是在上面记录了雷达。在他们修复雷达之前,问题是:如何使我的NSTextView正确地处理这些密钥?
我只是在谷歌上搜索了一小段时间,却没有找到一个好的现代答案,所以我在这里发布我自己的答案,仅供参考。
发布于 2016-02-14 22:50:36
错误的方法是实现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左右就公开了,并且在此之前可能已经存在了一段时间,所以这种解决方案应该适用于所有现代系统。
https://stackoverflow.com/questions/35398979
复制相似问题