Hi, thanks, it works. But now I get a new trouble: If I set setHasHorizontalScroller:NO, any scrollPoint: I call programmatically is not seen by the next drag. In details:
within the method endGestureWithEvent: I call NSLog(@"endGesture %@", NSStringFromPoint([mClipView bounds].origin)); // and I get X = 50; [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(scrollToPageNum:) object:nil]; // now we go and adjust the scroll to 100. [self performSelector:@selector(scrollToPageNum:) withObject:NumI(page) afterDelay:0]; within the scrollToPageNum: I programmatically scroll the clipView to the X point = 100. [mDocView scrollPoint:newPoint]; [self reflectScrolledClipView:mClipView]; [self display]; Now I can see the page well positioned at X = 100 Also, if I check with NSLog(@"scrollToPage %@", NSStringFromPoint([mClipView bounds].origin)); everything looks ok. I get X = 100; Now If a drag again on the trackpad, the clipView moves suddenly to the X=50 then I can drag the page. Wrong! When setHasHorizontalScroller:YES the error doesn't occur. What do I miss? Regards -- Leonardo > Da: Quincey Morris <quinceymor...@earthlink.net> > Data: Thu, 16 Jun 2011 16:17:53 -0700 > A: Leonardo <mac.iphone....@gmail.com> > Cc: <cocoa-dev@lists.apple.com> > Oggetto: Re: pagingEnabled on NSScrollView? > > On Jun 16, 2011, at 14:57, Leonardo wrote: > >> I would like to reach the same effect as UIScrollView.pagingEnabled, but on >> an NSScrollView. Can that be done? >> >> If not, which technique should I use? >> I thought to deal with NSAnimationContext to move the scrollView's document >> with scrollPoint: when a scrolling ends (the finger stops dragging on the >> track-pad). Am I on the right way? > > NSScrollView is not designed to have this behavior, so you'll have to do the > work. > > The basic approach is to have (say) your window controller monitor the scroll > view's clip view's frame- and bounds-changed notifications. When you receive > these notifications, you examine the relationship between the "clip" view > bounds and the "document" (i.e. enclosed) view frame, and adjust the > relationship to align the two views however you want. > > To detect when scrolling "ends", you can use a well-known trick. When you see > a notification, don't perform the scrolling adjustment immediately, but > schedule it for "later" using 'performSelector: ... afterDelay: 0'. Since you > don't want multiple deferred adjustments to get queued, you first cancel any > pending ones with one of the 'cancelPrevious...' or 'cancelPerform...' > methods, just before invoking 'performSelector:...'. That way, the last one > "wins". > > If you want to have this adjustment animate, you should be able to use the > appropriate view's animator or NSViewAnimation to move the document view > frame. > > The only difficulty I can think of is if Lion's trackpad gesture-based > scrolling itself has some animation built into it (e.g. an iOS-like "bounce"). > In that case you might have some trouble trying to integrate your animation > with the built-in one. > > However, given that all of this is not expected Mac scroll view behavior, > unless you have a *very* compelling need for it, I'd recommend you don't do > it. NSScrollView responds to the Page Up and Page Down keys for paging. Why > limit the user to where you think the page boundaries are? > > _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) 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: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com