mac中NSScrollView滑动监测

简介: 不同于iOS中的UIScrollView,mac中的NSScrollView并没有一堆靠谱好用的delegate来帮助我们方便的监控ScrollView的状态。

不同于iOS中的UIScrollView,mac中的NSScrollView并没有一堆靠谱好用的delegate来帮助我们方便的监控ScrollView的状态。

iOS中我们可以通过UIScrollView的contentOffset属性来获知滑动的位置,而在mac中我们是通过NSScrollView的contentView(NSClipView的实例)的documentVisibleRect.origin来获知滑动的相对位置。

在iOS中我们可以通过UISCrollView的delegate方法- (void)scrollViewDidScroll:(UIScrollView *)scrollView;来在滑动的过程中做一些我们爱做的事儿呢。

那么在mac中NSScrollView我们有没有同样的东西来做我们爱做的事儿呢?
当然是有的,只是跟iOS中有些许的区别,NSScrollView是通过通知来实现的,直接上代码:

//找个合适的地儿,注册通知
NSNotificationCenter *center = [NSNotificationCenter defaultCenter] ;
    [center addObserver: self
               selector: @selector(boundsDidChangeNotification:)
                   name: NSViewBoundsDidChangeNotification
                 object: [self.scrollView contentView]];

需要注意的是 ,在上面通知注册之前,你需要加上这么一句:

[[self.scrollView contentView] setPostsBoundsChangedNotifications: YES];

然后在NSScrollView滑动的时候,你就能在你实现下面这个方法的地方,做你想做的爱做的事儿了:

- (void) boundsDidChangeNotification: (NSNotification *) notification
{
    // 在这里进行处理
    NSClipView *changedContentView=[notification object];
    
    // get the origin of the NSClipView of the scroll view that
    // we're watching
    
    NSPoint changedBoundsOrigin = [changedContentView documentVisibleRect].origin;
    
    
}

以上,欢迎典藏。

喜欢我的可以关注收藏我的个人博客:RobberJJ

目录
相关文章
mac中NSScrollView自定义滑动条NSScroller
最近在捣鼓mac上开发app,本以为iOS、mac开发本是同根生,弄起来应该差不多,上手之后才发现iOS是多么的优雅自在,而mac是干啥都觉得不太顺手,UIKit跟AppKit差别还真是不一般的大。
1436 0
|
1月前
|
NoSQL 数据可视化 Redis
Mac安装Redis
Mac安装Redis
38 3
|
2天前
|
iOS开发 MacOS Windows
Mac air使用Boot Camp安装win10 ,拷贝 Windows 文件时出错
Mac air使用Boot Camp安装win10 ,拷贝 Windows 文件时出错
|
1月前
|
关系型数据库 MySQL 数据安全/隐私保护
Mac安装Mysql5.7
Mac安装Mysql5.7
50 5
|
1月前
|
缓存 关系型数据库 MySQL
Mac安装brew
Mac安装brew
116 5
|
1月前
|
Oracle Java 关系型数据库
Mac安装JDK1.8
Mac安装JDK1.8
281 4
|
1月前
|
数据安全/隐私保护 iOS开发 MacOS
Mac安装Navicat Premium 16.3.5
Mac安装Navicat Premium 16.3.5
96 3
|
1月前
|
关系型数据库 MySQL 数据库
【Mac os系统】安装MySQL数据库
本文详细介绍了在Mac OS系统上安装MySQL数据库的步骤,包括下载、安装、配置环境变量、启动服务、授权设置以及解决常见问题,并提供了一些常用的MySQL命令。
66 0
【Mac os系统】安装MySQL数据库
|
2天前
|
项目管理 Python
如何在Mac上安装多个Python环境
在你的Mac上使用多个Python环境可以对项目管理很有帮助,特别是在同时处理不同Python版本或不同的包需求时。在这篇文章中,我们将向你展示如何在Mac上轻松地安装和管理多个Python环境。
16 5
 如何在Mac上安装多个Python环境
|
1天前
|
Oracle Java 关系型数据库
Mac电脑上安装和配置Flutter开发环境
Mac电脑上安装和配置Flutter开发环境
15 3