我有一个简单的聊天应用程序,其中包含基于视图的NSTableView文本消息视图,如下图所示。 每个消息都包含一个NSTextView实例,其高度适合所有文本。
我需要做的就是在用户选择文本并拖动鼠标足够远时启动NSScrollView(其中包含NSTableView实例)自动滚动。不幸的是,自动滚动没有出现。 如果在文本视图之外拖动某处,则一切正常。
我尝试直接通过从NSTextView子类的“鼠标拖动”事件中推入NSEvent实例(例如此文章中的示例)来直接调用autoscroll:方法:
- (void)mouseDragged:(NSEvent *)event
{
[self.scrollView autoscroll:event];
}
由于我覆盖了所有鼠标事件并实现了所有文本选择,因此这种方法经常被调用。但是自动滚动似乎不起作用。
更新
我发现在调用 -autoscroll:
方法之前,必须先调用同一对象的 -mouseDown:
方法。但是这会破坏我的文本选择机制。重点不在于成为第一响应者,而在于除了 mouseDown:
方法之外什么都没有。