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

macOS AppKit 的事件响应简介

所有的鼠标和键盘事件都会被NSApplication 派发到与之关联的某个具体的NSWindow 对象中,但有一种情况例外:如果按下的是Command(⌘)键,那么所有的NSWindow对象都有机会响应这个事件...一个窗口对象(NSWindow)处理窗口级别的事件(window-level events)以及将其他事件传递给窗口中的视图对象,同时一个NSWindow还允许通过它的delegate实现自定义窗口的行为方式...大部分的情况下,NSApp都会将事件派发给用户操作的那个窗口(NSWindow),这是通过调用窗口(NSWindow)的sendEvent:方法完成的....NSWindow派发事件时会根据事件类型略有不同:对于鼠标和触控板事件,NSWindow对象会将事件派发到用户鼠标点击的NSView.对于键盘(keyboard)事件,NSWindow通常会将事件派发给...当用户在一个视图控件上点击鼠标按钮后,如果包含这个视图的NSWindow不是key Window,那么这个NSWindow将会变成key Window,并且丢弃本次的鼠标事件;也就是说如果你用鼠标点击了一个不是

2.5K60

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

)的响应链进行处理;事件消息的处理起始于NSWindow的第一个派发对象....对于键盘事件, 响应是从窗口的第一响应者开始; 对于鼠标/触控板事件,响应是从用户操作的view开始; 如果事件消息在最初没有响应,那么响应链将按照视图的层级结构依次传递消息,直到窗口对象(NSWindow...对象的最初始第一响应者是它自己,当window显示在屏幕上时,也可以手动设定它的第一响应者对象(使用NSWindow对象的makeFirstResponder:方法)....当一个NSWindow对象在接收到鼠标点击(mouse-down)事件时,会自动设置鼠标所处的View为第一响应者;那么NSWindow对象如何确认某个对象是否能够成为第一响应者呢?...NSWindow 的makeFirstResponder: 生效的条件是什么? NSViewController实现acceptsFirstResponder方法并返回YES 有效果么? 为什么?

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

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券