0

出于多种原因,我将实现 NSOutlineViewDelegate 协议的类添加到响应者链中:

[myOutlineView setNextResponder:self];

这会阻止我的大纲视图滚动。拨打电话 - 滚动工作正常,将其放回 - 滚动停止。如果我使用向上和向下箭头在视图中移动选择,它会滚动以显示选定的行,但手势滚动不会做任何事情。

委托包含很多支持拖放的方法,以及支持上下文菜单的 ibaction 方法,但我想不出里面有什么会干扰滚动(我使用的是带有手势滚动的 macbook air)。有人知道是什么导致了干扰吗?或任何想法如何诊断?

我应该补充一点,我将委托类设为 NSResponder 的子类。

4

1 回答 1

1

所以答案是,当将委托添加到响应者链中时,您还必须将曾经在其位置的响应者添加到委托中 - 否则链会被破坏并且事件不会得到处理,所以它是:

    NSResponder *nextResponder = myOutlineView.nextResponder;
    [myOutlineView setNextResponder:self];
    [self setNextResponder:nextResponder];

随着响应者链的恢复,我的大纲视图现在再次滚动。万岁

于 2014-08-07T14:25:17.513 回答