我在 NSScrollView 中嵌入了一个 IKImageBrowserView,为了帮助测试这个问题,IKImageBrowserView 只填充了 NSScrollView 宽度的一半。
我的 NSScrollView 子类实现了以下方法并在滚动视图上滚动开始和结束时记录。
- (void)scrollWheel:(NSEvent *)event {
switch (event.phase) {
case NSEventPhaseBegan:
NSLog(@"NSEventPhaseBegan");
break;
case NSEventPhaseEnded:
NSLog(@"NSEventPhaseEnded");
break;
}
[super scrollWheel:event];
}
NSEventPhaseBegan 事件阶段在您开始滚动时成功调用光标是否在 IKImageBrowserView 上。这是预期的行为。
但是当您停止滚动时,当光标位于 IKImageBrowserView 上方时,不会调用 NSEventPhaseEnded 事件阶段。如果光标不在 IKImageBrowserView 上,则 NSEventPhaseEnded 会被调用。
为什么 IKImageBrowserView 阻止在我的 NSScrollView 上调用 NSEventPhaseEnded?