NSTextField还是NSTextView?

时间:2010-03-07 22:07:19

标签: cocoa macos text nstextfield nstextview

有人可以向我解释NSTextField和NSTextView之间的主要区别是什么?我知道NSTextView有更多的功能,通常用于更长的文本,NSTextField通常用于单行纯文本字段,但如果我理解正确,NSTextField也可以用于属性字符串和多行... < / p>

我特别需要的是一个控件,它可以在Tweetie或任何其他类似软件中的时间线视图中显示消息文本。我唯一的要求是:

  • 它应该以大约1-4行显示文字
  • 它应该能够在文本中显示链接(据我所知,这在两个控件中都应该很简单 - http://developer.apple.com/mac/library/qa/qa2006/qa1487.html
  • 应该让用户选择并复制文本
  • 不应让用户滚动文本,编辑文本或显示通常出现在可编辑文本字段中的上下文菜单,它甚至不应在此字段中显示文本光标

有了这样的要求,我使用NSTextField或NSTextView会更好吗? NSTextField是否足够好,或者NSTextView是否具有NSTextField不重要的东西?

1 个答案:

答案 0 :(得分:36)

  

有人可以向我解释NSTextField和NSTextView之间的主要区别是什么?我知道NSTextView有更多的功能,通常用于更长的文本,NSTextField通常用于单行纯文本字段,但如果我理解正确,NSTextField也可以用于属性字符串和多行... < / p>

技术上是正确的,但您通常将文本字段用于纯文本的值,通常只使用一行。 (处理多行,因为文本字段可以接受它们。如果没有其他内容,请以对您正在对文本执行的操作有意义的方式去除换行符。)

  
      
  • 它应该以大约1-4行显示文字
  •   

NSTextView。

  

NSTextView。在NSTextField中支持链接很棘手。

  
      
  • 应该让用户选择并复制文本
  •   

要么适用于此。

  
      
  • 不应让用户滚动文字
  •   

NSTextField或没有NSScrollView的NSTextView。您可以通过从库中拖动文本视图然后从布局菜单中选择“Unembed Objects”来在IB中执行后者。

  

编辑文字,

要么适用于此。

  

或显示通常出现在可编辑文本字段中的上下文菜单

是的,它应该。您应始终提供“复制”和只读服务等菜单项。任何一个控制都应该为你做这件事;不要打这个。

  

它甚至不应该在这个字段中显示文本光标

要么适用于此。

如果您启用选择(通常应该这样做),如果用户在字段中单击,它们将显示光标。这是一项功能,因为它指示选择锚点用于shift-⌘-arrow选择的位置。

  

有了这样的要求,我使用NSTextField或NSTextView会更好吗?

我会使用NSTextView。