我已覆盖adjustScroll:
的documentView中的NSScrollView
方法,以便研究如何使用它来约束大型滚动条。
我所看到的是,在调用普通滚动通知(我正在其他地方收听)之前,对于每个滚动“事件”,它调用adjustScroll
方法两次(!)并且第一次看起来总是如此用一个大小为(1,1)的矩形来调用它 - 奇怪吗?
我的方法如下:
override func adjustScroll(newVisible: NSRect) -> NSRect {
println("Document: adjustScroll: \(newVisible)")
return super.adjustScroll(newVisible)
}
println
的结果如下:
文件:adjustScroll :( 1.0,0.0, 1.0,1.0 )
文件:adjustScroll:(1.0,0.0,1436.0,855.0)
我的视图层次结构中只有一个“Document”对象,只有一个scrollView ...感到困惑。
我在adjustScroll
电话中打印出了堆栈。两个呼叫中的每个呼叫的相关部分如下:
(1.0,1.0)
[0 Grid 0x000000010007d697 _TToFC4Grid8Document12adjustScrollfS0_FVSC6CGRectS1_ + 87,
1 AppKit 0x00007fff84368070 - [_ NSScrollingConcurrentMainThreadSynchronizer _scrollToCononicalOrigin] + 655,
2 AppKit 0x00007fff84367a51 - [_ NSScrollingConcurrentMainThreadSynchronizer _synchronize:completionHandler:] + 167,
3 AppKit 0x00007fff84367963 __80 - [_ NSScrollingConcurrentMainThreadSynchronizer initWithSharedData:constantData:] _ block_invoke + 144,
4 libdispatch.dylib 0x000000010057ed43 _dispatch_client_callout + 8,
...
(1436.0,855.0)
[0 Grid 0x000000010007d697 _TToFC4Grid8Document12adjustScrollfS0_FVSC6CGRectS1_ + 87,
1 AppKit 0x00007fff84206f8d - [NSClipView _scrollTo:animateScroll:flashScrollerKnobs:] + 1302,
2 AppKit 0x00007fff84368209 - [_ NSScrollingConcurrentMainThreadSynchronizer _scrollToCononicalOrigin] + 1064,
3 AppKit 0x00007fff84367a51 - [_ NSScrollingConcurrentMainThreadSynchronizer _synchronize:completionHandler:] + 167,
4 AppKit 0x00007fff84367963 __80 - [_ NSScrollingConcurrentMainThreadSynchronizer initWithSharedData:constantData:] _ block_invoke + 144,
5 libdispatch.dylib 0x000000010057ed43 _dispatch_client_callout + 8,
...