gpt4 book ai didi

objective-c - 如何获取包含 WebView 的单元格的 NSTableView heightOfRow

转载 作者:行者123 更新时间:2023-12-03 17:55:54 33 4
gpt4 key购买 nike

我有一个 NSTableView,它有一个列,其中的行包含 WebKit WebView。我遇到的问题是如何获取 WebView 的大小,以便可以在 TableView 的 heightOfRow: 方法中设置高度。

以下是代码的相关部分:

// The only essential/required tableview dataSource method
- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView {
return [self.messagesArray count];
}

// This method is optional if you use bindings to provide the data
- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {

NSString *identifier = [tableColumn identifier];
if ([identifier isEqualToString:@"MainCell"]) {

ChatTableViewCell *cellView = (ChatTableViewCell*)[tableView makeViewWithIdentifier:@"MainCell" owner:self];
NSString *htmlString = [self.messagesArray objectAtIndex:row];
[[cellView.webView mainFrame] loadHTMLString:htmlString baseURL:nil];
[cellView.webView.mainFrame.frameView setAllowsScrolling:NO];

return cellView;
}

return nil;
}

我遇到的问题是如何在此方法中获取大小。到目前为止我所尝试的一切都给了我一个异常(exception)。我认为这是因为调用以下方法时单元格未正确初始化,并且 WebView 方法 loadHTMLString 是异步的。

-(CGFloat) tableView:(NSTableView *)tableView heightOfRow:(NSInteger)row {
//What can I put here?
}

我希望能够将单元格的大小调整为与 WebView 中的内容相同的大小。

编辑:我尝试将以下内容添加到 heightOfRow 方法中:

    WebView *webView = [((ChatTableViewCell*)[tableView viewAtColumn:0 row:row makeIfNecessary:YES]) webView];
NSRect webViewRect = [webView frame];
return webViewRect.size.height;

它给了我以下内容:

警告:NSTableView 检测到从 -heightOfRow 委托(delegate)方法内部请求了 rowView。不支持!

最佳答案

试试这个,它会给你 webview 内容的高度..

使用这样的 html 字符串加载 webview..

embedHTML = [embedHTML stringByAppendingFormat:@"<body><div id='size_div'>%@</div></body></html>",YourString];

现在在 webViewDidFinishLoad 方法中保留此语句...

NSString *output = [webView stringByEvaluatingJavaScriptFromString:@"document.getElementById(\"size_div\").offsetHeight;"];  
NSLog(@"height: %@", output);

关于objective-c - 如何获取包含 WebView 的单元格的 NSTableView heightOfRow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13577965/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com