0

我正在使用 InAppSettingsKit 进行设置,并希望在表格视图页脚中添加公司超链接。我已经成功地在部分标题中添加了一个 uiwebview(它位于表格视图的底部并显示为页脚)。webview 显示超链接,但不响应触摸。

Web 视图在 settingsViewController:tableView:viewForHeaderForSection 中创建:

    UIView *containerView = [[UIView alloc] init];
    containerView.backgroundColor = [UIColor clearColor];
    UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(30, 0, self.view.frame.size.width-60, 35)];
    webView.delegate = self;
    NSDateComponents *dateComponents = [[NSCalendar currentCalendar] components:NSYearCalendarUnit fromDate:[NSDate date]];
    NSUInteger fontSize = 13;

    NSString *link = @"<a href=\"http://www.google.com\">My Hyperlink</a>";
    [webView loadHTMLString:[NSString stringWithFormat:@"<html><head></head><body style=\"font-family: sans-serif;font-size:%dpx;\"> <center>Copyright © %d %@</center></body></html>", fontSize, dateComponents.year,link]  baseURL:nil];
    webView.backgroundColor = [UIColor clearColor];
    webView.opaque = NO;
    [containerView addSubview:webView];
    return containerView;

和 uiwebview 委托方法:

-(BOOL) webView:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest *)inRequest navigationType:(UIWebViewNavigationType)inType {
DDLogVerbose(@"Web view should start load with request %@. InType: %d", inRequest.URL.absoluteString, inType);
if ( inType == UIWebViewNavigationTypeLinkClicked ) {
    [[UIApplication sharedApplication] openURL:[inRequest URL]];
    return NO;
}

return YES;

}

谁能告诉我为什么触摸不起作用?顺便说一句... webView:shoudStartLoadWithRequest: 当表格视图被加载/显示时被立即调用

谢谢!

4

3 回答 3

1

在您的代码中,我发现容器视图有两个问题,没有框架,并且您没有为 webview 设置正确的框架,一旦尝试此示例,您就会发现出错的地方。

UIView *containerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
    UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(30, 0, 100, 35)];
于 2013-06-19T14:07:26.423 回答
0

原因是 IASKSettingsDelegate 方法 settingsViewController:tableView:heightForHeaderForSection: 为该特定部分返回 0。返回与 uiwebview 的高度相同的高度解决了这个问题。

于 2013-06-19T16:20:07.437 回答
0

作为替代方案:从 iOS 7 开始,UIKit/NSAttributedString 支持 NSLinkAttributeName,甚至支持 HTML 的基本导入。因此,您可以使用 UITextView 而不是 UIWebView作为表格视图的页眉/页脚。

要导入 HTML,-[NSAttributedString data:options:documentAttributes:]请与NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType选项一起使用。

NSData *data = [html dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *options = @{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute: @(NSUTF8StringEncoding)};
NSAttributedString *attributedText = [[NSAttributedString alloc] initWithData:data options:options documentAttributes:NULL error:NULL];

UITextView *textView = [[UILabel alloc] initWithFrame: ...];
textView.editable = NO;
textView.scrollEnabled = NO;
textView.textContainerInset = UIEdgeInsetsZero; // optional
textView.attributedText = attributedText;

[UILabel 显示超链接但它们不可点击,请参阅UILabel 和 NSLinkAttributeName: Link is not clickable

于 2015-10-19T22:26:41.270 回答