首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSTextView实时文本高亮显示

NSTextView实时文本高亮显示
EN

Stack Overflow用户
提问于 2013-10-07 03:45:16
回答 3查看 1.3K关注 0票数 1

我想要创建一个文本视图,它将支持基本事物的突出显示,比如链接和哈希标签。类似的特性可以在Twitter.app中找到:

不需要支持点击这些链接,只需要在用户编辑文本视图的内容时正确突出显示所有内容。

问题是,做这件事的最好方法是什么?我真的不想使用重量级语法高亮库,但是我没有找到任何简单的和小型的库来突出显示一些东西。

我应该解析文本并自己突出显示吗?如果应该的话,我可以使用哪些库来标记文本,以及哪些库允许我进行实时高亮显示?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-10-07 08:05:58

是的,如果您希望这样做,可以使用您自己的解析来查找相关部分,然后使用textStorage of NSTextView来更改查找范围的文本属性。

票数 3
EN

Stack Overflow用户

发布于 2013-10-07 11:51:39

您是否尝试过使用正则表达式来匹配文本(背景中,文本被更新时)?在找到匹配项之后,设置( NSAttributedString)所需的属性非常简单。

你可以看看Regular expressions in an Objective-C Cocoa application

票数 1
EN

Stack Overflow用户

发布于 2013-10-07 08:48:26

下面是一个小示例:您需要实现这个委托方法,textview1是TextView的出口:

代码语言:javascript
复制
   - (BOOL)textView:(NSTextView *)textView shouldChangeTextInRange:(NSRange)affectedCharRange replacementString:(NSString *)replacementString
    {
        NSLog(@"string is this");
        NSString *allTheText =[textView1 string];
        NSArray *lines = [allTheText componentsSeparatedByString:@""];
        NSString *str=[[NSString alloc]init];
        NSMutableAttributedString *attr;
        BOOL isNext=YES;
        [textView1 setString:@""];
        for (str in lines)
        {
            attr=[[NSMutableAttributedString alloc]initWithString:str];
            if ([str length] > 0)
            {

                NSRange range=NSMakeRange(0, [str length]);
                [attr addAttribute:NSLinkAttributeName value:[NSColor greenColor] range:range];
                [textView1 .textStorage appendAttributedString:attr];
                isNext=YES;

            }
            else
            {
                NSString *str=@"";
                NSAttributedString *attr=[[NSAttributedString alloc]initWithString:str];
                [textView1 .textStorage appendAttributedString:attr];
                isNext=NO;
            }
        }
   }

这将给你的文本蓝色与超链接;

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19216754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档