繁体   English   中英

如何让Cocoa NSTextView随着用户输入而增长?

[英]How do I make a Cocoa NSTextView grow as the user types into it?

对于我正在编写的Cocoa应用程序,我想支持主文档内容右侧的面板,用户可以在其中添加当前所选文档内容的注释。 (如果您熟悉Microsoft Word或Scrivener,此功能类似于这些应用程序中的注释功能。)Scrivener可以很好地开始使用大小适合默认文本的文本字段,然后随着用户增长更高键入它。 我想为我的Cocoa应用程序实现相同的行为。

什么是基本策略?

有一些委托方法可以让您捕获实际的击键。

实现以下委托方法以根据键盘重新签署第一响应者

-(BOOL)textFieldShouldReturn:(UITextField *)textfield

实现以下委托方法以检测何时将焦点返回给TextField。 您可能还希望删除当前文本,或者如果您愿意,还可以保留已存在的文本

-(void)textFieldDidBeginEditing:(UITextField *)textfield

实现下面的委托方法来检测输入的字符和位置(基于插入位置),并基本上将字符添加到您的私有和显示的字符串(显示到您的文本字段)

-(BOOL)textView:(NSTextView *)aTextView shouldChangeTextInRange:(NSRange)affectedCharRange replacementString:(NSString *)replacementString

实现以下委托方法以检测编辑何时完成,以便您可以执行任何其他清理等...您希望这样做。

-(void)textFieldDidEndEditing:(UITextField *)textField

我将回复你关于TextView本身的动态调整大小,但是(至少在iOS上)我已经看到了解决方案,并且我曾经使用过它。 基本上你的字体大小是静态的,可能你的宽度是静态的,然后根据你有多少行来编辑你的高度,或者你可以保持你的高度静态,并根据字符等改变你的宽度......由你决定。

这是关于动态大小调整的StackOverflow的一组很好的响应如何将UITextView的大小调整为其内容?

因此,如果您将击键识别与动态尺寸相结合,您应该拥有它!

自定义非NSScrollView嵌入式NSTextView可以解决问题。 在这里查看我的答案如何使NSTextView与文本一起成长?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM