It's been a classic design principle that any scrollable view should
auto-scroll when an object is dragged outside or close to boundary of
Here's what Alan Cooper wrote in his "About Face" book:
"Auto-scroll is a very important adjunct to drag-and-drop. Wherever
the drop target can possibly be scrolled offscreen, the program needs
to auto-scroll. Any scrollable drag-and-drop target must auto-scroll."
However I've suddenly realized that I've never seen any implementation
of auto-scrolling (including my own :) that would not SUCK.
Auto-scrolling is perhaps the most awkward feature associated with
drag-and-drop that I would name.
IMHO, auto-scrolling sucks because:
1. It lacks control over precision. Variable auto-scroll rate sucks
because when I want to scroll faster (and I always do :), I often
over-scroll. Then I need to drag the object to the opposite side of
the screen and auto-scroll back.
2. It is not informative nor it is flexible. At the beginning, you
don't see how far you may need to scroll, so I usually pick the
fastest rate and over-scroll, as in 1. or have to wait too long if I
take a low scroll rate. The transition from lower to faster scroll
rates appears abruptly and often cause over-scrolling.
3. It is slow. First, you have to wait until it starts in vicinity of
the view border, then wait until it scrolls with a particular speed.
This all ends up in that with auto-scrolling I never feel comfortable
and confident, but often strained and lacking control.
This made me think about good alternatives to auto-scrolling. What do you think?