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

标签 objective-c cocoa textbox nstextview

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

基本策略是什么?

最佳答案

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

根据键盘实现以下委托(delegate)方法以退出第一响应者

-(BOOL)textFieldShouldReturn:(UITextField *)textfield

实现以下委托(delegate)方法来检测焦点何时返回到 TextField。您可能还想删除当前文本,或者如果您愿意,可以保留已经存在的文本

-(void)textFieldDidBeginEditing:(UITextField *)textfield

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

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

执行以下委托(delegate)方法来检测编辑何时完成,以便您可以执行任何其他清理等...您希望执行的操作。

-(void)textFieldDidEndEditing:(UITextField *)textField

我会就 TextView 本身的动态大小回复您,但正如我所见(至少在 iOS 上)有一个解决方案并且我曾经使用过它。你基本上会让你的字体大小静态,可能你的宽度静态,然后根据你有多少行编辑你的高度,或者你可以保持你的高度静态,并根据字符等改变你的宽度......由你决定。

这是 StackOverflow 上关于动态大小调整的一组很棒的回复 How do I size a UITextView to its content?

因此,如果您将击键识别与动态调整大小结合起来,您应该拥有它!!!

关于objective-c - 如何让 Cocoa NSTextView 随着用户输入而增长?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7180703/

相关文章:

ios - 以编程方式添加 UICollectionView 时应用崩溃

objective-c - 如何在 Objective-C 中引用调用类

vb.net - 按钮/文本框的不透明度 - VB.NET

javascript - 在 ASP.NET 中,您可以 String.Empty 焦点所在的 TextBox 吗?

c# - 将占位符添加到密码 C# winforms 的文本框控件

ios - 确定数组中的最小值并在另一个数组中找到对应的字符串

ios - 通用应用程序中的 UIAlertController 和 UIPopoverController?

ios - 如何手动删除 Cocoalumberjack 日志

objective-c - 获取 NSTimer 目标的返回值

cocoa - 重写insertInManagedObjectContext : will have no effects on child entities in mogenerator : why and how to do?