【问题标题】:Change color of UITextView links with a filter?使用过滤器更改 UITextView 链接的颜色?
【发布时间】:2011-11-07 13:28:32
【问题描述】:

在 UITextView 上检测到的链接总是蓝色的。没有办法直接改变这一点。但是我可以覆盖某种将蓝色变为红色的过滤器吗?

【问题讨论】:

  • 好主意 =) 其他文本呢?

标签: iphone objective-c ios filter uitextview


【解决方案1】:

没有实用的方法可以使用 UITextView 执行此操作,您可以尝试使用 UIWebView 更改其“自动检测链接”属性,然后重新格式化 HTML。

UIWebView *webView = [[UIWebView alloc] init];
webText.delegate = self;
[webView setDataDetectorType:UIDataDetectorTypeLink];

NSString * htmlString = [NSString stringWithFormat:@"<html><head><script> document.ontouchmove = function(event) { if (document.body.scrollHeight == document.body.clientHeight) event.preventDefault(); } </script><style type='text/css'>* { margin:0; padding:0; } p { color:black; font-family:Helvetica; font-size:14px; } a { color:#000000; text-decoration:underline; }</style></head><body><p>%@</p></body></html>", [update objectForKey:@"text"]];

[webText loadHTMLString:htmlString baseURL:nil];

或类似的东西。

希望这会有所帮助。

编辑

不要忘记实现 UIWebView 委托以使其正常工作。

【讨论】:

  • 我曾想过这样做,但 UIWebView 对我的需求来说实在是太“重”了,尤其是因为每个表格视图单元格都会有一个。
  • 我认为这应该是你最好的选择,如果不是你唯一的。我真的很想知道是否有另一种解决方案,它会自动更好,因为 UIWebView 确实对您的原因来说太重了。 (如果你问我的话,出于各种原因。)
【解决方案2】:

实际上有一种方法可以做到这一点使用私有 API

UITextView 具有类 UIWebDocumentView 的(单个)子视图,选择器为 setUserStyleSheet:

以下代码应将链接的颜色更改为绿色。至少,它对我有用! :)

for (UIView *subview in textView.subviews) {
    [subview setUserStyleSheet:@"a { color: #00FF00; }"];
}

我知道这真的很晚了,但是几个小时的谷歌搜索让我无处可去,所以我想我会分享这个。

【讨论】:

  • UIView 中没有 setUserStyleSheet 方法,你确定这样可以吗?
  • 当然不可用,因为它是私有的。您需要像这样转发声明:@interface UIView (Stylesheet) - (void) setUserStyleSheet: (NSString *) str; @end
  • UITextView 可能有多个子视图,请检查子视图是否响应 setUserStyleSheet。 for (UIView *subview in textview.subviews) { if ([subview respondsToSelector:@selector(setUserStyleSheet:)]) { [subview performSelector:@selector(setUserStyleSheet:) withObject:@"a { color: #00FF00; }"]; } }
【解决方案3】:

UIwebDocumentView 缺少选择器。 导入 UIWebDocumentView.h 得到它。 不幸的是,这是一个私有 API,您的应用可能会被 Apple 拒绝:-(

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-04
    • 2020-08-09
    • 2013-03-09
    • 1970-01-01
    • 2011-10-31
    • 1970-01-01
    相关资源
    最近更新 更多