I have a cocoa application that has a dozen scrollViews. I love the elasticity, especially in some cases where I’d actually put some kind of “Easter egg” (kinda like the apple logo in the books app. you scroll down, you see an apple logo.)
My problem is, that I need to limit the amount of exposed content beyond the actual content area. When I scroll with the magic mouse, especially, the elasticity causes the whole scroll content to disappear! Until you release the scroll, it moves back in.
Now, I would like to limit the elasticity to a specific margin. how?
NSScrollView manages a view which has a “canvas” bigger than what is/can be display at any one time. So if you want a different behaviour:
(void)setHorizontalScrollElasticity:but that doesn’t quite do what you want. (you want to allow a fixed amount of elasticity)For example, I once wrote a world-map program but needed the map to loop forever on the horizontal axis. I just manually managed the scrolling with a subclassed NSView. (don’t have access to code currently)
Something to ponder about: I understand your reasons but just wanted to mention it. The behaviour should be expected by the user. If it looks like a button, it should act like out. Currently, scrollviews have the elasticity so that when they scroll via momentum (user is no longer touching), it doesn’t stop suddenly once it reaches the end… which would be jarring for users.
Example
If subclassing NSScrollview, I would try overriding
- (void)scrollWheel:(NSEvent *)and detect what are the bounds of the contentView and cap it at a certain value. Something around the lines of: