将委托添加到响应者链停止滚动工作
Posted
技术标签:
【中文标题】将委托添加到响应者链停止滚动工作【英文标题】:adding delegate to responder chain stops scrolling from working 【发布时间】:2014-08-04 11:01:37 【问题描述】:出于多种原因,我已将实现 NSOutlineViewDelegate 协议的类添加到响应者链中:
[myOutlineView setNextResponder:self];
这会阻止我的大纲视图滚动。拨打电话 - 滚动工作正常,将其放回 - 滚动停止。如果我使用向上和向下箭头在视图中移动选择,它会滚动以显示选定的行,但手势滚动不会做任何事情。
delegate 包含很多支持拖放的方法,以及支持上下文菜单的 ibaction 方法,但我想不出里面有什么会干扰滚动(我使用的是带有手势滚动的 macbook air) .有人知道是什么导致了干扰吗?或任何想法如何诊断?
我应该补充一点,我将委托类设为 NSResponder 的子类。
【问题讨论】:
【参考方案1】:所以答案是,当将委托添加到响应者链中时,您还必须将曾经在其位置的响应者添加到委托中 - 否则链会中断并且事件不会得到处理,所以它去:
NSResponder *nextResponder = myOutlineView.nextResponder;
[myOutlineView setNextResponder:self];
[self setNextResponder:nextResponder];
响应者链恢复后,我的大纲视图现在再次滚动。万岁
【讨论】:
以上是关于将委托添加到响应者链停止滚动工作的主要内容,如果未能解决你的问题,请参考以下文章
响应者链(UItableViewCell 内的 UIWebView)Objective-C
为啥 -[NSTextInputClient doCommandBySelector:] 不应该将事件传递到响应者链上?