当您使用较新的Apple Magic Mouse鼠标滚动(至少在10.6,我不能确认任何以前的Mac OS),你得到的惯性卷轴滚动一样在iPhone上(也就是手指轻弹后滚动,它不会突然停止,而是逐渐变慢)。此行为是“免费”的所有NSScrollViews,它会出现。

有特殊情况,如特威特为Mac(我听说特威特写与工作类似于UITableView如何工作在iPhone上的自定义表视图类)。

我的问题是,如何滚动视图知道如何做到这一点惯性滚动?我的猜测是鼠标[司机]重复发送滚动事件,使用润版滚动幅度(或类似的东西),在滚动周期。但我真的不知道它是如何工作的。

我有我的滚动视图类中的一些问题,滚动,我试图找出为什么(很明显,我们没有在源代码必须特威特,看看它为什么没有得到正确的滚动),但只是想以便更好地了解它是如何工作,以解决我自己的问题。

有帮助吗?

解决方案

NSScrollView不知道魔术鼠标什么。所述惯性滚动是通过反复滚动事件进行。

您可以覆盖NSResponder类的-scrollWheel:方法和使用的NSLog看魔术鼠标滚动触控板,从传统的滚动的区别。

传统滚动集deltaXdeltaY指示的“行”的个数中滚动。

平滑滚动设备(轨迹板和魔术鼠标)使用deviceDeltaXdeviceDeltaY指示的像素的数量来滚动。

此外,魔术鼠标使用scrollPhase以指示何时惯性滚动正在进行中。

请注意deviceDeltaXdeviceDeltaY是NSEvent的私有方法。

其他提示

要退出的势头,加上@“NO”为重点@“AppleMomentumScrollSupported”在你的应用程序给用户默认的开始(见的Magic Mouse开发者发行说明)。所以,你也可以将此项添加到您的tweetue的默认覆盖它的Tweetie。

 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
 NSDictionary *appDefaults = [NSDictionary dictionaryWithObject:@"NO" forKey:@"AppleMomentumScrollSupported"];
 [defaults registerDefaults:appDefaults];

有TUIScrollView的源代码可在这里 https://github.com/twitter/twui

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top