我有一个程序与NSTextView(实际上,一个自定义的子类),其中很多行数据可能被编程插入。 (它从USB端口读取串行数据流。)我有一个用于启用/禁用自动滚动的复选框。我想允许用户简单地通过尝试向后滚动来摆脱自动滚动。所以,我需要一个通知,告诉我用户何时滚动,而不仅仅是边界发生了变化,因为每次插入更多的串行数据时都会发生这种情况。这可能吗?NSNotification滚动 - 用户与编程
1
A
回答
1
当然你可以使用通知,告诉你何时滚动发生,然后检查文本视图是否完全滚动到底部?如果是,请开启自动滚动功能。如果没有,请关闭它。
0
这不是最好的,但这在我的情况。我认为可以通过一些NSEvent操作来完成一些清理工作,但是我意识到我可以通过检查当前滚动位置与总文档矩形高度来检查用户是否已经开始滚动。
NSRect totalRect = [[serialScrollView contentView] documentRect];
NSRect visibleRect = [[serialScrollView contentView] documentVisibleRect];
NSInteger totalHeight = totalRect.size.height;
NSInteger visibleHeight = visibleRect.size.height;
NSInteger position = visibleRect.origin.y;
NSInteger scrollPoint = position + visibleHeight;
if (totalHeight != scrollPoint)
[autoscrolls setState:0];
所以基本上,如果滚动位置变得比程序期望它是从程序写入的任何其他,它变成自动滚动关闭。关于这个实现的一个很酷的事情是,如果你的广告是else [autoscrolls setState:1];
,那么当你向下滚动以追赶流时,它会重新开启自动滚动。当你运行一个有很多输出的shell脚本时,这将模拟终端中的滚动行为,比如Fedora上的yum install
或者类似的东西。
相关问题
- 1. 滚动内部UITableView时处理NSNotification
- 2. 编程滚动与GridLayoutManager
- 3. UWP ScrollViewer - 区分用户滚动和编程滚动
- 4. ScrollView编程滚动
- 5. NSNotification与dispatch_get_main_queue
- 6. Ionic2 - 编程滚动离子滚动
- 7. 与用户互动:编程R为了向用户提问
- 8. 材质用户界面v1表与滚动(溢出:滚动)
- 9. 以编程方式取消用户滚动UIScrollView
- 10. iOS UIScrollView没有用户交互和编程滚动
- 11. amStock(Flex)编程式滚动
- 12. 编程式滚动UIWebView
- 13. Webkit.net滚动文档编程
- 14. 面板滚动可编程
- 15. 编程滚动ScrollableTextBlock控制
- 16. 以编程方式禁用ScollViewer滚动
- 17. NSNotification和多线程
- 18. 编程自动布局与滚动查看错误
- 19. 添加滚动型手动或编程
- 20. 管理NSNotification与UITabBarController交互
- 21. NSNotification与委托协议?
- 22. NSNotification addObserver:someOtherClass
- 23. 与滚动矩形滚动
- 24. jQuery - 确定用户与编程事件
- 25. 反应原生ListView检测编程滚动正常滚动
- 26. 以编程方式滚动到滚动视图内的视图
- 27. 滚动底部的滚动型编程 - iphone
- 28. 编程式滚动div,父母与overflow-x隐藏
- 29. 以编程方式设置TextView与顶部的滚动条
- 30. 用户地图滚动
是的,这基本上是我最终做的。 – Andrew