首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Mac开发跬步积累(六): 响应链NSResponder Chain

响应链具有如下特性: 由App Kit自动创建的; 一个App可以包含任意数量的响应链,但同一刻仅能有一条响应链处理消息; 可以响应链中插入响应者:(通过NSResponder的 setNextResponder...响应者是构成响应链中的一部分. 0x03 第一响应者 第一响应者是指用户通过鼠标或者键盘选择的交互对象;它通常是整个响应链中的第一个响应者对象,NSWindow对象的最初始第一响应者是它自己,当window显示屏幕上...当一个NSWindow对象接收到鼠标点击(mouse-down)事件,会自动设置鼠标所处的View为第一响应者;那么NSWindow对象如何确认某个对象是否能够成为第一响应者呢?...显然ViewController中我们已经实现了keyDown:方法;回答这个问题之前,我们先看一下网络上普遍关于NSViewController监听键盘事件的方法:使用NSEvent添加本地事件监听...keyDown:方法没有机会被执行; ?

2.3K10

macOS AppKit 的事件响应简介

从另一种意义上讲,应用程序是被事件(event)驱动的: 它从runloop的事件队列中获取一个事件(NSEvent) 派发事件(NSEvent)到合适的对象(Object) 事件被处理完成后,再取下一个事件...NSApp将事件转换为NSEvent后,第一件事就是调用sendEvent:方法进行派发....NSWindow窗口对象将事件以NSResponder Message消息的形式(比如mouseDown:或者keyDown:)派发到与用户操作关联的NSView对象....应用程序处理键盘事件,如果这个事件不是快捷键(Key equivalents)或者控制键Keyboard interface control,那么应用程序会将事件通过sendEvent:方法发送给kew...window,然后窗口(key window)对象会调用第一响应者的keyDown:方法,将事件传递到整个响应链条中.

2.6K60
您找到你想要的搜索结果了吗?
是的
没有找到

Ios常用第三方框架(一)

BreakOutToRefresh - 一个下拉刷新打砖块的开源 Swift 库,能让用户等待下拉刷新的时候边玩撞球游戏边等待。...ZLSwiftRefresh - swift下拉刷新/上拉加载更多,支持自定义动画,集成简单,兼容UITableView/CollectionView/ScrollView/WebView。...第二个Demo模拟了一个经典的FlowLayout,任意一个元素隐藏,底下的元素需要自动“顶”上来,配合这个扩展,你可以IB里连一连,选一选,不用一行代码就能搞定。...另外,还支持链接植入,不管是手动还是使用UIDataDetectorTypes自动把电话号码、事件、地址以及其他信息变成链接。...placeholder_TextView - 带有placeholder的TextView:带有提示信息的textview,使用懒加载的思想,支持扩展、自定义,类似许多APP内部的意见反馈页面 。

5.4K31

WWDC20中iOS的改变

这里做一个简单的介绍 UICollectionViewCompositionalLayout 我们写现有的layout的时候,了解到目前的collectionView有item和section两个维度...刷新数据源,只要重新计算diff,计算进行局部刷新,可以大大提高UICollectionView的性能。...modern collectionview 中也引入了新的DiffableDataSource的概念,我们不再需要设置Datasource通过一系列数据源方法返回,而是通过一开始的绑定,通过snapshot...今年的API增加了Catalyst对iOS中处理物理键盘事件的支持,这对设备的用户行为上报是个利好消息,此外,tvOS的焦点引擎API现在可用于Mac Catalyst中的应用程序,UICollectionView...可以看出Swift早晚会转正,而且内容会更加完善,例如App Clip只Swift上支持,有兴趣的同学可以看https://xiaozhuanlan.com/topic/2804537169 最后,可以参考

1.7K10

成为一名优秀 Swift 开发人员的 10 个小技巧

发送事件; 这是我们 iOS 编码过程中最常见的一些场景。...当控制器有成百上千行代码,标记就显得很重要了。使用标签来分割和管理代码非常重要,可以代码中快速导航。Xcode 11 右侧有一个代码导航器,基于此可以更频繁地使用标记。 4....此外,通过代码导航可以导航更好地控制共享参数和特定行为。还可以避免让 Storyboard 变得一团糟。 5. 项目中集成最热门的第三方库 尽量不要重新发明轮子。...使用扩展并合理使用它们来创建公共库 我很喜欢 Swift 扩展。使用 Objective-C ,我总是不情愿地使用继承。当然这并不总是错误的,正确的使用子类也不会出错。...开发文档中,通知是控制器与模型或服务之间实施通信可同步模式的正确方法,我项目中经常使用 Notification Center,基本上实现了观察者模式,并让应用程序带有更多响应式的元素。

2.3K40

iOS开发之资讯类App常用分类控件的封装与实现(CollectionView+Swift3.0+)

当然,本篇博客我们依然使用Swift3.0来实现的。...之前的博客中,我们系列的介绍了UICollectionView的各种回调,以及如何自定义CollectionView的布局,并给出了如何使用CollectionView自定义瀑布流。...上面这个效果就是我们今天博客中所实现的效果,而下方这两个效果是我们之前聊UICollectionView以及自定义布局所给出的相应的Demo, 下方的Demo所对应的源码也Gitbub上进行了分享...数据源创建好后,实例化CESelectThemeController对象,将相应的数据源传给我们的控件即可。...如果该Cell不是第一个Section中的Cell, 那么就不触发手势开始的事件,因为我们规定只有第一个Section中的Cell才有长按拖动手势。

1.5K50

当你浏览器中输入Google.com并且按下回车之后发生了什么?

(Windows)一个 WM_KEYDOWN 消息被发往应用程序 HID把键盘按下的事件传送给 KBDHID.sys 驱动,把HID的信号转换成一个扫描码(Scancode),这里回车的扫描码是 VK_RETURN...(Mac OS X)一个 KeyDown NSEvent被发往应用程序 中断信号引发了I/O Kit Kext键盘驱动的中断处理事件,驱动把信号翻译成键码值,然后传给OS X的WindowServer...这个过程通常是由 NSApplication 主事件循环产生并且处理的,通过 NSEventType 为 KeyDownNSEvent 。...当协议或主机名不合法,浏览器会将地址栏中输入的文字传给默认的搜索引擎。大部分情况下,把文字传递给搜索引擎的时候,URL会带有特定的一串字符,用来告诉搜索引擎这次搜索来自这个特定浏览器。...之后文档的状态会变为“完成”,浏览器会进行“加载”事件。 注意解析 HTML 网页永远不会出现“语法错误”,浏览器会修复所有错误,然后继续解析。 执行同步 Javascript 代码。

1.3K130

iOS开发之常用资讯类App的分类展示与编辑的完整案例实现(Swift版)

上篇博客我们聊了《资讯类App常用分类控件的封装与实现(CollectionView+Swift3.0)》,今天的这篇博客就在上篇博客的基础上做些东西。...当然,主要我们还是使用灵活多变的CollectionView来实现。下方我们将会给出程序的运行效果,然后给出核心的代码实现,文章的末尾我们会给出github上源代码的分享链接。...三、CEScrollMenu组件的介绍 该组件就是本示例上面横向滚动的菜单项,该组件的右边有一个“+”号按钮,点击该按钮将会通过闭包的形式将按钮的点击事件回调给CEMenuScrollController...1、点击Cell的操作 下方是位于CEMenuCollectionView中的代码段,也就是点击菜单对应的Cell所执行的方法。...然后将Cell的点击事件回调给CEMenuCollectionView的使用者,回调,要传入当前点击Cell的indexPath。 ?

1.4K50

抛弃UITableView,让所有列表页不再难构建

小明想了一下,有这几个思路,可以FeedCell里再嵌套个tableview,预先计算出高度,commentCell的删除按钮点击事件里重新计算高度然后删除cell;或者封装一下commentView...ListAdapter 适配器,它将collectionview的dataSource和delegate统一了起来,负责collectionView数据的提供、UI的更新以及各种代理事件的回调。...准备工作:布局collectionView和绑定适配器 BaseListViewController.swift let collectionView: UICollectionView =...return ListSectionController() } ///数据为空显示的占位视图 func emptyView(for listAdapter: ListAdapter)...Feed } } 这里把点击commentCell的删除按钮事件代理出来给CommentSectionController处理,闭包里先对cellModels数组删除,然后调用IGListKit

1.6K30

AVKit框架详细解析(二) —— 基于视频播放器的画中画实现(一)

目前,当视频画中画窗口中播放,示例应用程序会显示一条消息。您可以使用画中画控制器代理中的方法来控制画中画播放开始和结束发生的情况。... CustomPlayerViewController.swift 中,滚动到标有 AVPictureInPictureDelegate 的扩展。代理方法都带有空实现,以节省您的输入时间!...: nil) 在这里,您可以画中画启动关闭自定义播放器控制器。...您在此处调用的方法等效于当用户请求从画中画返回标准播放标准播放器将调用的方法。 现在打开 CategoryListViewController.swift。...对于这两种类型的播放器控制器,当用户画中画窗口中点击Restore,代理扩展会调用此方法。

2.7K10

春招路上孤独的iOSer的心路历程(面经)

前言: 双非本科菜鸡的春招有些坎坷,还记得第一次面试(2019年12月12号),带有一丝丝紧张的感觉跟字节跳动的一面面试官聊了56分钟,当初没复习啥,某学长的建议早面早知道问题所在,一路聊下来,还算是基础问题都答出来了...tableview的重用机制以及与collectionview的区别 cpu和gpu的区别 离屏渲染 mvvm与mvc 项目亮点 野指针处理 内存管理 深拷贝与浅拷贝 如何进行类的深拷贝 网易有道 2...-21 一面 一面 70分钟 1.聊了下目前的情况以及经历 2.事件传递与响应链 3.runtime机制聊一下 4.runloop的理解 5.mvc与mvvm的理解 6 gcd与NSopraretion...与swift区别 什么时机加载(没答上来) oc与swift语言区别 tableview做了哪些优化 如何实现多个图片下载后合成一张图片 除了gcd group之外 其他方法 信号量与锁的区别 mvc...有一个第三方的视频播放器SDK,提供一些基本的API: 1)prepare:初始化,传入播放地址 2)play:开始播放 3)pause:暂停播放 4)seek:跳到某一刻 5)release

2.5K20

再探Kotlin 跨平台——迁移Paging分页库至KMM

从而在落地遇到问题,寻得更多的解决办法。 上周,Square正式将Paging分页库迁移到了Kotlin Multiplatform平台,使用在旗下的支付软件Cash App中。...如果之前项目已经使用了AndroiX的Paging库,则可以Android平台上无缝迁移。...如果你之前从未使用过Paging库,可以参考许久之前我写的两篇相关文章: View中使用Paging3分页库 Compose中使用分页库 接下来我们就以multiplatform-paging-samples...中仅定义了两个未使用的方法,用于将类型导出到Object-C或Swift,代码如下所示。...activityIndicator)     activityIndicator.frame = textField.bounds     activityIndicator.startAnimating()     self.collectionView

1.1K20

手把手带你撸一个网易云音乐首页(三)

前言 Hello, 大家好,今天准备和大家继续分享如何利用 Swift 来实现一个网易云音乐的首页;上俩篇文章文章发布以后,我收获了不少小伙伴的关注与点赞,同时也得到了一些非常有用的建议,在这里再次感谢大家的认可...我们实际开发过程中,数据请求的操作必不可少,必须要先将数据提供给 ViewModel,然后在数据更新重新 Reload TableView。...我们知道 UICollectionView 的属性中,有一个分页的属性:isPagingEnabled,当设置成 true ,每次滚动的位移量等于它自身 frame 的宽度;当不设置这个分页属性,它的默认值是...decelerationRate = .fast } // 这个方法的返回值,决定了 CollectionView 停止滚动的偏移量 override func targetContentOffset...构建跳转后的搜索页面 首先,需要实现搜索视图,我们的视图控制器 MusicSearchViewController 继承自 UITableViewController,所以它的 UINavigationItem 中自己带有

2.3K10

不使用jquery只执行一次事件侦听器函数

我制作了一段代码,用箭头上下垂直移动6个项目前面的元素.当按下enter,我将加载一组带有该项目的图像.代码工作正常,但在输入命中后,这段代码需要停止,所以我可以用箭头键做其他事情并输入.现在它只是输入被击中后继续前进...enterPushed){ document.addEventListener('keydown', function(event){ if(event.keyCode ==.../API/EventTarget/addEventListener 浏览器兼容性: Chrome 55,Firefox 50,Safari(WebKit). 2> Kolby..: 如果要停止所有键事件...,只需删除事件侦听器即可. var enterPushed = false; var handleKeyDown = function(){ if(event.keyCode == 38){...', handleKeyDown); } }; document.addEventListener('keydown', handleKeyDown); 如果你想停止只听输入或特定键

16310

编码篇-iOS开发中的奇巧小伎

22、当使用-performSelector:withObject:withObject:afterDelay:方法,需要传入多参数问题 23、比较两个CGRect/CGSize/CGPoint是否相等...光标 37、当UITextView/UITextField中没有文字,禁用回车键 38、通知监听APP生命周期 39、获取collectionViewCell屏幕中的frame 40、UITextField...5.collectionView的内容小于其宽高的时候是不能滚动的,设置可以滚动: collectionView.alwaysBounceHorizontal = YES; collectionView.alwaysBounceVertical...UITextView/UITextField光标 textField.tintColor = [UIColor clearColor]; 37、当UITextView/UITextField中没有文字,...事件响应的时候点击它不起作用) view.exclusiveTouch = YES; // 一个一个设置太麻烦了,可以全局设置 [[UIView appearance] setExclusiveTouch

5.3K10

2019-06-11 当你浏览器输入google.com回车发生了什么

当···发生了什么? 这个仓库试图回答一个古老的面试问题:当你浏览器中输入 google.com 并且按下回车之后发生了什么?...(Windows)一个 WM_KEYDOWN 消息被发往应用程序 HID把键盘按下的事件传送给 KBDHID.sys 驱动,把HID的信号转换成一个扫描码(Scancode),这里回车的扫描码是 VK_RETURN...(Mac OS X)一个 KeyDown NSEvent被发往应用程序 中断信号引发了I/O Kit Kext键盘驱动的中断处理事件,驱动把信号翻译成键码值,然后传给OS X的 WindowServer...这个过程通常是由 NSApplication 主事件循环产生并且处理的,通过 NSEventType 为 KeyDownNSEvent 。...当协议或主机名不合法,浏览器会将地址栏中输入的文字传给默认的搜索引擎。大部分情况下,把文字传递给搜索引擎的时候,URL会带有特定的一串字符,用来告诉搜索引擎这次搜索来自这个特定浏览器。

65521

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券