cocoa – 如何拦截NSTextField的字段编辑器中的击键?

cocoa – 如何拦截NSTextField的字段编辑器中的击键?,第1张

概述介绍 当我的自定义NSTextField处于“文本编辑模式”并且字段编辑器已作为firstResponder放在它前面时,我不再通过NSTextField.keyDown(…)获得击键.我知道现在通过字段编辑器路由击键.大多数在线建议是在自定义NSTextField的委托中覆盖以下方法: control(_:textView:doCommandBySelector:) 我确实覆盖了这个方法,但它似 介绍

当我的自定义NSTextFIEld处于“文本编辑模式”并且字段编辑器已作为firstResponder放在它前面时,我不再通过NSTextFIEld.keyDown(…)获得击键.我知道现在通过字段编辑器路由击键.大多数在线建议是在自定义NSTextFIEld的委托中覆盖以下方法:

control(_:textVIEw:doCommandBySelector:)

我确实覆盖了这个方法,但它似乎没有被调用?见下面的代码:

class FocusDelegate: NSObject,NSTextFIEldDelegate{    func control(control: NSControl,textVIEw: NSTextVIEw,doCommandBySelector commandSelector: Selector) -> Bool {        println("FocusDelegate")        if commandSelector == Selector("cancelOperation:"){            println("cancelOperation")            control.abortEditing()            return true        }        return false    }}

我做的唯一其他事情是将我的自定义NSTextFIEld的委托设置为上面类的实例.我也尝试将上面的方法直接放到自定义的NSTextFIEld类中 – 它不会导致任何错误,但也不会被调用.

问题

>在让代表电话上班时我错过了什么?
>除了创建我自己的自定义字段编辑器之外,这是唯一的方法吗?可以不询问textDIDChange(通知:NSNotification)来产生按键吗?
>在使用控件(_:textVIEw:doCommandBySelector :)委托方法时,如何捕获没有标准键绑定的按键.特别是,我想截取没有映射到任何标准选择器的组合键“shift enter”. (隐含问题:您是否只能映射到NSResponder中的标准键 *** 作方法?)

解决方法 我相信我已经在NSTextFIEld的代表及其fIEldEditor及其代表的工作方面取得了更大的明确性.是的,每个人都有自己的委托,NSTextFIEld会自动设置为fIEldEditor的委托.

我正在向主机NSTextFIEld添加委托.当fIEldEditor是firstResponder时,这不会被调用,这是我所关注的.这也不是上述场景的重要代表.

似乎有用的是使NSTextFIEld符合NSTextVIEwDelegate协议并专门覆盖该方法:

func textVIEw(textVIEw: NSTextVIEw,shouldChangeTextInRange affectedCharRange: NSRange,replacementString: String) -> Bool

陷阱各种按键.

textDIDChange中的通知(通知:NSNotification)在此方案中不可用,因为它是在按键后报告的.

总结

以上是内存溢出为你收集整理的cocoa – 如何拦截NSTextField的字段编辑器中的击键?全部内容,希望文章能够帮你解决cocoa – 如何拦截NSTextField的字段编辑器中的击键?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1001083.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存