Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/115.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
Ios 单击URL时UITextView崩溃_Ios_Objective C_Nsstring_Uitextview - Fatal编程技术网

Ios 单击URL时UITextView崩溃

Ios 单击URL时UITextView崩溃,ios,objective-c,nsstring,uitextview,Ios,Objective C,Nsstring,Uitextview,我的代码中有以下几行代码,用于向UITextView添加可单击的url。merchantwebsite是我的UITextView self.merchantwebsite.attributedText = [[NSAttributedString alloc] initWithString:@"http://www.crossfit.com" attributes:@{NSLinkAttributeName: @"http://www.crossfit.com"}]; self.merchant

我的代码中有以下几行代码,用于向UITextView添加可单击的url。merchantwebsite是我的UITextView

self.merchantwebsite.attributedText = [[NSAttributedString alloc] initWithString:@"http://www.crossfit.com" attributes:@{NSLinkAttributeName: @"http://www.crossfit.com"}];
self.merchantwebsite.userInteractionEnabled = YES;
当我单击UITextView时,应用程序会与日志一起崩溃

2014-03-19 16:13:43.051 BTLE[27103:60b] -[__NSCFConstantString scheme]: unrecognized selector sent to instance 0x1a4404
有人能告诉我我做错了什么吗


谢谢

告诉UITextView要显示的内容时,只需键入链接,然后在从.storyboard页面选择UITextView时,在右侧的设置中启用链接识别

您不需要任何代码,您只需要:

merchantwebsite.text = @"http://www.crossfit.com";

显然,您的代码期望URL为NSURL。但是,很简单,NSString不是NSURL。试着这样做:

self.tv.attributedText = 
    [[NSAttributedString alloc] 
        initWithString:@"http://www.crossfit.com" 
        attributes:
            @{NSLinkAttributeName: [NSURL URLWithString:@"http://www.crossfit.com"]}];

按如下方式更改代码:

 NSAttributedString *string = [[NSAttributedString alloc] initWithString:@"http://www.crossfit.com" attributes:@{NSLinkAttributeName: @"http://www.crossfit.com"}];
[self.merchantwebsite setAttributedText:string];

尝试在我们的项目中添加链接器标志-all_load和-ObjC(如果您不使用它们)。我使用属性文本的原因是使文本看起来像超链接。然后更改字体大小和颜色(可能添加下划线),使其看起来像链接。同意是
NSString
不是
NSURL
。但是文档中说:
此属性的值是and NSURL对象(首选)或NSString对象。
因此
NSString
应该按预期工作。(如果我测试它,我无法用iOS 7.0和iOS 7.1模拟器的
NSString
重现崩溃),这是正确的@Emmanuel,但崩溃是由OP没有显示给我们的其他代码引起的。这就是为什么我说“你显然有密码”。。。可能是他的文本视图的委托导致了崩溃。我知道这是一个老问题了,但似乎不管Apple说属性可以是字符串或NSURL,UITextViewDelegate方法需要NSURL,否则您将得到无法识别的选择器崩溃