iOS tableViewCell展示 UIWebView載入所有內容後禁止滾動
是這樣 cell 展示一個網頁所有內容然後撐開cell重新整理cell高度, 然後禁掉滾動事件。這樣完美實現一個自適應高度的html/富文字樣式。
// 賦值部分 NSUserDefaults 高度儲存 寫在cell裡面
NSUserDefaults *user = [NSUserDefaultsstandardUserDefaults];
if ([user objectForKey:webHight]) {
self.webviewHight.constant = [NSStringstringWithFormat:@"%@", [user objectForKey:webHight]].floatValue;
self.webView.delegate = nil;
[user removeObjectForKey:webHight];
[user synchronize];
}else{
self.webView.delegate = self;
}
UIScrollView *first_tempView = (UIScrollView *)[self.webView.subviewsobjectAtIndex:0];
first_tempView.scrollEnabled = NO;
#pragma mark ----------------------- webView 代理 載入完後獲取高度 ------------------------
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
// 獲取webView的高度
CGFloat webViewHeight = [[self.webViewstringByEvaluatingJavaScriptFromString:@"document.body.scrollHeight"] floatValue];
NSUserDefaults *user = [NSUserDefaultsstandardUserDefaults];
[user setObject:[NSStringstringWithFormat:@"%f",webViewHeight]
[user synchronize];
// 發通知告訴tableview 重新整理 tableView接收通知然後reloaddata就可以了
[selfsendMessage];
}
#pragma mark ----------------------- 獲取高度去重新整理 ------------------------
-(void)sendMessage
{
//建立通知
NSNotification *notification =[NSNotificationnotificationWithName:rechNotifyNameobject:niluserInfo:nil];
//通過通知中心傳送通知
[[NSNotificationCenterdefaultCenter] postNotification:notification];
}
#pragma mark ----------------------- 更新高度通知 tableView 裡面 ------------------------
-(void)getnote{
//註冊通知
[[NSNotificationCenterdefaultCenter] addObserver:selfselector:@selector(tongzhi:) name:rechNotifyNameobject:nil];
}
- (void)tongzhi:(NSNotification *)text{
[_tableViewreloadData];
}
// 移除監聽的事件
-(void)viewWillDisappear:(BOOL)animated
{
[superviewWillDisappear:animated];
[[NSNotificationCenterdefaultCenter] removeObserver:selfname:rechNotifyNameobject:nil];
}