這個問題是有關Get scroll bar position of an NSScroller on the fly獲取上滾動
列表元素邊界或框架,但現在我想知道如何在滾動獲取列表元素(綠色矩形)的當前位置。
[self bounds]
或[self frame]
或[[self enclosingScrollView] ...]
不會爲這種事情工作或我使用它錯了。
編輯
裏面的[[NSScrollView enclosingScrollView] contentView]]
框架,我們看到的NSBox
的名單。 當我的NSBox
三角這是列表元素,NSBox
的實例存儲在-activeTicketRow
點擊,我一直以爲我可以再進去NSScrollView
框架NSBox
座標時[[NSScrollView enclosingScrollView] contentView]]
範圍的更改,但看完「查看編程指南」後,我可能不會。
我在NSScrollView
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(updateConvMenu:)
name:NSViewBoundsDidChangeNotification
object:[[self enclosingScrollView] contentView]
];
加入觀察員和-updateConvMenu
我得到的[[self enclosingScrollView] contentView]
座標,所以這是很好的。
問題
不,我想用來存儲NSBox
(其中三角是點擊)從[[self enclosingScrollView] contentView]
內-activeTicketRow
這樣我就可以再得到它的框架座標-updateConvMenu
當[[self enclosingScrollView] contentView]
範圍的更改。
我覺得現在這個問題更具可讀性。
它應該是相對於窗口。 當我使用'[self convertRect:[[[NSApp delegate] activeTicketRow] bounds] fromView:nil]'activeTabTicket'是列表元素,我得到了很好的座標,但他們指向項目的原始位置,他們不當我滾動列表時改變。 – xyz 2011-03-21 16:24:05
什麼是自我?你確定你想要窗口座標嗎?如果您嘗試使用彈出式窗口,則幾乎肯定需要屏幕座標。您的-activeTicketRow的邊界在哪個座標空間中生存?你確定這一切都是你認爲的嗎?我不打賭。 – 2011-03-21 16:33:40
我真的認爲你需要研究視圖幾何http://developer.apple。com/library/mac /#documentation/Cocoa/Conceptual/CocoaViewsGuide/Coordinates/Coordinates.html%23 // apple_ref/doc/uid/TP40002978-CH10-SW1 and view hierarchy http://developer.apple.com/library/ mac /#documentation/Cocoa/Conceptual/CocoaViewsGuide/Coordinates/Coordinates.html%23 // apple_ref/doc/uid/TP40002978-CH10-SW1 ... – 2011-03-21 16:34:53