Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa 在文本控件中插入超链接的正确方法_Cocoa_Hyperlink_Nstextview - Fatal编程技术网

Cocoa 在文本控件中插入超链接的正确方法

Cocoa 在文本控件中插入超链接的正确方法,cocoa,hyperlink,nstextview,Cocoa,Hyperlink,Nstextview,全部, 我正在寻找一种将超链接正确插入NSTextView的方法 试图做到这一点,我找到了解释如何使其工作的链接。但是,尝试设置以下文本: abchttp://www.google.com 我无法使用以下代码执行此操作: std::string test = "abc \"http://www.google.com\""; int pos1 = test.find( "http://" ); std::string temp1 = test.substr( 0, pos1 ); [tv setS

全部,

我正在寻找一种将超链接正确插入NSTextView的方法

试图做到这一点,我找到了解释如何使其工作的链接。但是,尝试设置以下文本:

abchttp://www.google.com

我无法使用以下代码执行此操作:

std::string test = "abc \"http://www.google.com\"";
int pos1 = test.find( "http://" );
std::string temp1 = test.substr( 0, pos1 );
[tv setString:temp1];
std::string url_text = test.substr( pos1 );
NSMutableAttributedString string = [[NSMutableAttributedString alloc] init];
NSURL *url_obj = [NSURL URLWithString:url];
[string appendAttributedString:[NSAttributedString hyperlinkFromString:url_text withURL:url_obj];
[[tv textStorage] setAttributedString: string];
[string release];
但是,下划线和蓝色前景从文本的第一个位置开始,即整个文本都有下划线,而不仅仅是链接

所以进一步看,我发现我可以做的很简单。但是,无论是设置上面的字符串,还是尝试键入链接,都不能给出链接的适当可见表示形式-蓝色和下划线字体

现在我的问题是:

当我手动设置文本并键入文本时,是否可以在NSTextView中自动解析超链接? 如果没有,上面的代码有什么问题?为什么我看到的是所有字符串上的链接,而不仅仅是链接的文本

我希望我不需要做任何手工工作,一切都是自动的


感谢您并为这么大的帖子感到抱歉。

如果您键入一个链接,然后键入一个空格,那么自动链接检测是否有效?@Willeke,它应该以“www”或“”开头?@Willeke,它应该以“www”或“”开头吗?好的,我只是试着键入“www.google.com”或“”。什么也没发生。文本保持为文本,但未成为链接。文件上说是10.5+我现在是10.6。。。抱歉,5分钟已过期。;-)如果以编程方式打开xib中的“智能链接”或打开“automaticLinkDetectionEnabled”,则应检测键入的链接。可以使用NSTextView的某个checkTextIn…方法检测以编程方式插入的链接。@Willeke,yes,就是这样做的,它可以工作。苹果公司的文件很烂…;-)