【问题标题】:Call NSTextview complete: in menu?调用 NSTextview 完成:在菜单中?
【发布时间】:2013-06-05 15:54:41
【问题描述】:

我想在 Edit 菜单中添加一个 Complete 菜单项,例如 TextEdit,但 First Responder 没有 complete: 操作。如何链接?

感谢和问候,

【问题讨论】:

  • complete: 方法由NSTextView 和NSResponder 提供,它应该出现为First Responder 的操作。提供有关您在做什么的更多详细信息,也许有人可以找出您看不到它的原因。
  • 我是 Cocoa 和 Objective C 的新手,我使用的是 OS X 10.8 和 Xcode 4.6.2,我构建了一个单一的窗口界面,里面有一个 NSTextView。添加完整的菜单项后,我尝试在左侧屏幕上按住 ctrl 并拖动它到 First Responder,但弹出 no complete: found。
  • 奇怪,它确实丢失了......如何在下面的答案中找回它。

标签: cocoa xcode4


【解决方案1】:

有趣,我不知道为什么没有列出 complete: 操作 - 我刚刚在一个新项目中进行了测试,它确实丢失了。然而,这里是如何让它显示出来:

  1. 在 IB 中选择“First Responder”
  2. 转到属性检查器(视图 > 实用程序 > 显示属性检查器
  3. 如果 First Responder 部分未展开,请单击显示三角形
  4. 您应该会看到一个标有“用户定义”的表格,其中包含“操作”和“类型”列
  5. 单击底部的 + 以添加新行
  6. 双击出现的“action”条目进行编辑,输入“complete”,回车。

之后,当您拖动到第一响应者时,complete: 应该在那里。

HTH

【讨论】:

  • 如果是这种情况,可能值得在 First Responder 上提交请求 -complete: 的雷达。
  • 这太棒了,连我都懒得去搜索了。
【解决方案2】:

您需要创建自己的操作..

然后将该方法链接到menu。

为了它的工作,你需要编写自己的逻辑、算法等。这没有任何预定义的方法,如剪切、复制、打印。

那么你需要实现这个委托:

- (NSArray *)control:(NSControl *)control
            textView:(NSTextView *)textView
         completions:(NSArray *)words
 forPartialWordRange:(NSRange)charRange
 indexOfSelectedItem:(NSInteger *)index;

【讨论】:

  • 你不应该给它起任何名字,因为NSTextView 会响应-complete: 并在收到该(预定义)消息时显示一个完成列表。
  • @Bavarious:好的,更新我的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多