将委托添加到响应者链停止滚动工作

时间:2014-08-04 11:01:38

标签: delegates scroll nsoutlineview responder-chain

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

[myOutlineView setNextResponder:self];

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

代理包含很多支持拖放的方法,以及用于支持上下文菜单的ibaction方法,但是我不能想到会干扰滚动的内容(我正在使用带有手势的macbook air)滚动)。有人知道造成干扰的是什么吗?或任何想法如何诊断?

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

1 个答案:

答案 0 :(得分:1)

所以答案是,当将一个委托添加到响应者链中时,您还必须向代理添加以前在其位置的响应者 - 否则链断开并且事件不会被处理,所以它云:

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

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