この問題をテストするために、NSScrollView内にIKImageBrowserViewが埋め込まれています。これは、IKImageBrowserViewがNSScrollViewの幅の半分しか埋めないためです。
私のNSScrollViewサブクラスは、次のメソッドを実装し、scrollviewでスクロールが開始および終了したときにログに記録します。
- (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が呼び出されないようにするのはなぜですか?