Re: NSScrollview general question
Re: NSScrollview general question
- Subject: Re: NSScrollview general question
- From: email@hidden
- Date: Thu, 05 Mar 2015 14:45:17 +0900
There is a WWDC video that covers it in detail.
There's not a way to get nontransient overlay scrollers.
The thoughtful thing is that the NSScrollView api provides methods that give you the right sizes to work with independent of what the user's preference is.
The overlay rationale was one about making user content the visual priority.
That said, it's tricky to do right but one can use the overlay scrollers and still implement a visual indicator of relative location within the ScrollView. (Think Photoshop inspector palette with a visible rect over the thumbnail image)
It's all about the intersection and union of documentView and clipView (a.k.a. ContentView)
Implementing custom scrollers is a lot less palatable though.
The rubberbanding effect is the sticky area. If you turn it off your scroll view suddenly really stands out as acting different from most of the OS.
If you try to do custom scrollers with it on, well, have fun with that.
Add Responsive Scrolling to the mix with tracking the momentum.
Sent from my iPhone
> On 2015/03/05, at 13:25, Graham Cox <email@hidden> wrote:
>
>
>> On 5 Mar 2015, at 2:59 pm, Kyle Sluder <email@hidden> wrote:
>>
>> Subclass NSScroller and override +isCompatibleWithOverlayScrollers to
>> return NO. Then assign an instance of this subclass via
>> -setHorizontalScroller:.
>
>
> OK, somewhat long-winded, but I'll give it a go.
>
> However, I can see another issue. What if I want the overlay style of scroller, but always visible? Maybe that isn't even possible? When I use System Preferences to always show, the scroller has an opaque background and border. It's not the appearance of the overlay scroller I mind, or am objecting to, it's its transient behaviour that makes it hard to grab the thumb. I guess I really want an overlay scroller but that stays put. I'm presuming that the workaround you mention will always give me an old-school scrollbar.
>
> My use-case might be rather specific to a set of particular circumstances.
>
> First, the view in question is very wide, but not often all that tall, meaning that horizontal scrolling and skimming with the thumb is often desirable.
>
> Second, my mouse isn't an Apple mouse, and it only has a vertical scroll wheel, not a dual-axis scroller. That means that for this wide scrollview, the scrollwheel isn't too useful, so I'm falling back to grabbing the thumb. However, the transient scrollbars make it hard to grab, and the vertical scrollwheel makes it hard to force the scrollbars to show without resorting to either shift-scrolling with the scrollwheel, or using the accessory trackpad with my other hand.
>
> The usual situation is that I have wide scrollview with no vertical scroll available. With my particular mouse, there's no way with a single hand on my mouse to show the thumb and scroll the view horizontally; I have to use my other hand either to press shift or to hit the trackpad. In other words, one-handed skimming of my wide view is impossible with this mouse and the default system settings. Maybe Apple don't care about using 3rd party input devices? Maybe I shouldn't care, it's unlikely to affect my app's users, but it sure is affecting me.
>
> --Graham
>
>
>
> _______________________________________________
>
> Cocoa-dev mailing list (email@hidden)
>
> Please do not post admin requests or moderator comments to the list.
> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
>
> Help/Unsubscribe/Update your Subscription:
>
> This email sent to email@hidden
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden