2013-06-19 4 views
0

Я использую InAppSettingsKit для своих настроек и хочу добавить гиперссылку компании в нижний колонтитул таблицы. Я успешно добавил uiwebview в заголовок раздела (который находится внизу таблицы и отображается как нижний колонтитул). Веб-просмотр показывает гиперссылку, но не отвечает на прикосновение.Гиперссылка в нижнем колонтитуле uitableview

Веб вид создается в 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; 

}

Может кто-нибудь сказать мне, почему прикосновение не Работа?? Btw ... webView: shoudStartLoadWithRequest: сразу вызывается при загрузке/отображении табличного представления

Thx!

ответ

1

в вашем коде я обнаружил две проблемы для вида контейнера, нет рамки, и вы не устанавливаете правильный фрейм для своего веб-просмотра, как только попробуете этот пример, вы поймете, где вы поступили неправильно.

UIView *containerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)]; 
    UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(30, 0, 100, 35)]; 
+0

Спасибо за ваш ответ, но это не помогло. Веб-просмотр с гиперссылкой formattet уже отображается просто отлично. Он просто не реагирует так, как должен. – SkeetSkeet

+0

На самом деле вы были на правильном пути :) См. Мой ответ – SkeetSkeet

0

Причина в том, что метод IASKSettingsDelegate settingsViewController: Tableview: heightForHeaderForSection: 0 возвращается для этого конкретного раздела. Возвращая ту же высоту, что и высота uiwebview, решили проблему.

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 and NSLinkAttributeName: Link is not clickable

Смежные вопросы