gpt4 book ai didi

ios - UITableviewController 与可编辑 UIWebView 的 contentInset 混淆

转载 作者:行者123 更新时间:2023-11-29 12:29:44 25 4
gpt4 key购买 nike

我有一个包含多个部分的 UITableViewController,是动态创建的。每个部分的其中一行包含一个 UIWebView 作为它的 accessoryView。 UIWebView 预先填充了 HTML,以允许编辑其中的文本。当 UIWebView 被点击时,tableView 滚动,这样包含 UIWebView 的行就在键盘上方;键盘出现,UIWebView 成为第一响应者。如果 UIWebView 位于 tableView 的顶部,则此方法工作正常,因此不需要滚动表格。但是,如果点击下方的一行以滚动表格,则 UIWebView 的 scrollView 的 contentInset 会发生变化。具体来说,添加了 contentInset 的 bottom 值,使 UIWebView 变长变细,而不是矩形。

我已经上传了屏幕截图来展示这一点:

选择 UIWebView 之前: Before selecting UIWebView

选择UIWebView后: After selecting UIWebView

UIWebView退出第一响应者状态,键盘dismiss后,恢复正常。

我知道正在调整的是 contentInset 属性,因为我使用键值“contentInset”添加了 webView 的 scrollView 的观察者,我可以观察到它的变化,甚至记录它并确认它已经改变。

最佳答案

原来问题不是contentInset,而是UIWebView内置的UIScrollView的contentOffset。这是我修复它的方法:

@interface SomeViewController ()
@property BOOL monitorContentOffsetChanges;
@end

@implementation SomeViewController

- (void)webViewCreationMethod {
UIWebView *myWebView = [[UIWebView alloc] init];
//Setup webView

//Observe any changes to the scrollView's contentOffset property
[[webView scrollView] addObserver:self forKeyPath:@"contentOffset" options:0 context:NULL];
[self setMonitorContentOffsetChanges:YES];
}

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
//The webView's contentOffset was changed
if (object == [[self webView] scrollView] && [keyPath isEqualToString:@"contentOffset"] && [self monitorContentOffsetChanges]) {
//Stop responding to changes in the contentOffset to prevent recursive calling of this method
[self setMonitorContentOffsetChanges:NO];
//Force the contentOffset back to zero
[[[self webView] scrollView] setContentOffset:CGPointZero animated:NO];
//Start monitoring changes to the contentOffset again in case of future changes
[self setMonitorContentOffsetChanges:YES];
}
}

@end

此解决方案是必需的,因为 UIWebView 的 scrollView 属性是只读的,因此您不能将 UIScrollView 子类化并覆盖 setContentOffset 以不采取任何操作并将其强制到 UIWebView 中。

我现在唯一不确定的是这个解决方案是否对 App Store 安全。

关于ios - UITableviewController 与可编辑 UIWebView 的 contentInset 混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28093221/

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