作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 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];
}
当您开始滚动时,无论光标是否位于 IKImageBrowserView 上,NSEventPhaseBegan 事件阶段都会成功调用。这是预期的行为。
但是当停止滚动时光标位于 IKImageBrowserView 上时,不会调用 NSEventPhaseEnded 事件阶段。如果光标不在 IKImageBrowserView 上,则 NSEventPhaseEnded 会被调用。
为什么 IKImageBrowserView 阻止在我的 NSScrollView 上调用 NSEventPhaseEnded?
最佳答案
与 Apple 的一位乐于助人的工程师交谈,他告诉我这种行为实际上是一个错误。不幸的是,ImageKit 正在吃一些scrollWheel 事件。作为解决方法,子类化 IKImageBrowserView,实现scrollWheel 并将事件转发到“super”和封闭的 ScrollView 。
@implementation MyImageBrowserView
- (void)scrollWheel:(NSEvent *)theEvent {
[super scrollWheel:theEvent];
if ([theEvent phase] == NSEventPhaseEnded)
[[self enclosingScrollView] scrollWheel:theEvent];
}
}
@end
关于cocoa - NSEventPhaseEnded 未在带有 IKImageBrowserView 的 NSScrollView 上调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11378323/
我是一名优秀的程序员,十分优秀!