首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未在具有IKImageBrowserView的NSScrollView上调用NSEventPhaseEnded

未在具有IKImageBrowserView的NSScrollView上调用NSEventPhaseEnded
EN

Stack Overflow用户
提问于 2012-07-08 04:16:48
回答 1查看 471关注 0票数 1

我在NSScrollView中嵌入了一个IKImageBrowserView,为了帮助测试这个问题,IKImageBrowserView只填充了NSScrollView宽度的一半。

我的NSScrollView子类实现了以下方法,并在滚动开始和结束时记录滚动视图。

代码语言:javascript
复制
- (void)scrollWheel:(NSEvent *)event {
    switch (event.phase) {
        case NSEventPhaseBegan:
            NSLog(@"NSEventPhaseBegan");
            break;
        case NSEventPhaseEnded:
            NSLog(@"NSEventPhaseEnded");
            break;
    }

    [super scrollWheel:event];
}

当您开始滚动时,无论光标是否在IKImageBrowserView上,NSEventPhaseBegan事件阶段都会成功调用。这是预期的行为。

但是当您停止滚动时,当光标位于IKImageBrowserView上时,不会调用NSEventPhaseEnded事件阶段。如果光标不在IKImageBrowserView上,则会调用NSEventPhaseEnded。

为什么IKImageBrowserView阻止在我的NSScrollView上调用NSEventPhaseEnded?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-02 04:15:10

与苹果的一位乐于助人的工程师交谈,他告诉我,这种行为实际上是一个错误。不幸的是,ImageKit吃了一些scrollWheel事件。作为一种解决办法,将IKImageBrowserView子类化,实现scrollWheel,并将事件转发给"super“和包含的滚动视图。

代码语言:javascript
复制
@implementation MyImageBrowserView

- (void)scrollWheel:(NSEvent *)theEvent {
   [super scrollWheel:theEvent];

   if ([theEvent phase] == NSEventPhaseEnded) 
       [[self enclosingScrollView] scrollWheel:theEvent];
   }
}

@end
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11378323

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档