我有这个来自 IB 的接口。正如您在“详细信息”中看到的,UITextfield
其中有很多 HTML 代码。
我后面有一个 PHP 服务器,所以我也可以在后端创建它。执行此操作的最佳方法是什么?
我有这个来自 IB 的接口。正如您在“详细信息”中看到的,UITextfield
其中有很多 HTML 代码。
我后面有一个 PHP 服务器,所以我也可以在后端创建它。执行此操作的最佳方法是什么?
您可以使用以下方法将 HTML 转换为字符串:
NSRange range;
NSString *string;
while ((range = [string rangeOfString:@"<[^>]+>" options:NSRegularExpressionSearch]).location != NSNotFound){
string=[string stringByReplacingCharactersInRange:range withString:@""];
}
NSLog(@"Un block string : %@",string);
但是如果您的文本包含一些 <> 它将被删除
您应该使用解析器来解析 html,即使它只是一个小片段。AKV 建议使用 RegEx,但很难找到正确的 RegEx,另请参见此处。ie<a href="foo" title="5>3">
是会混淆 AKV 正则表达式的有效 html。
iOS有一个可以使用的板载C-lib,libXML2,但实际上你应该使用一些包装器,我认为Objective-C-HMTL-Parser既简单又很棒。
你会像这样使用它
HTMLParser *parser = [[HTMLParser alloc] initWithString:html error:&error];
HTMLNode *bodyNode = [parser body];
NSString *string = [bodyNode allContents];
由于 HTMLNode 可以包含其他 HTMLNode 作为子节点,因此您也可以使用该信息进行文本格式化。
如果这是一个选项,还有用于将 HTML 解析为 NSAttributedStrings的出色DTCoreText项目
将其显示在具有透明背景的 UIWebView 中,这样您的所有 HTML 标记仍然可以正常工作。只需使 UIWebView 与您的 UITextView 大小相同并将其放在同一个位置!
当您将 HTML 字符串加载到 webView 中时,请使用此代码作为透明背景。
finalhtmlstring = [NSString stringWithFormat:@"<html><head></head><body style='background-color:transparent;'>%@</body></html>",htmlstring];
[myWebView loadHTMLString:finalhtmlstring baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]]];
并确保您(在 xib 文件中)将 webView 的背景本身设置为 0% alpha 并切换“不透明”框...
最后不要忘记在您的 xib 文件中设置委托并将其添加<UIWebViewDelegate>
到您的 .h 文件中。