gpt4 book ai didi

ios - 在 UIWebView 中管理垂直滚动

转载 作者:可可西里 更新时间:2023-11-01 06:16:48 24 4
gpt4 key购买 nike

我尝试通过“正常”滚动操作获得内容可编辑的UIWebView,这样当文本光标将被键盘隐藏时,UIWebView滚动以防止这种情况。我从 iOS developer library 阅读了“管理键盘”文档使用我的 UIWebView 的 scrollView 属性没有得到任何结果。我还在网上发现了很多技巧,使用 ScrollView 属性/方法或 javascript 命令但无法获得正常的滚动操作,例如 MacOS 上的任何 NSTextView。你知道这个问题的解决方案吗?

[EDITED] 找到了解决方案,并创建了一个由 NSTimer 触发的方法。要获得插入符 Y 位置,应该选择事件元素,并插入一个虚拟节点。然后获取 node.offsetTop 属性给出 caretY。不要忘记删除节点...

最佳答案

好的,这是 Apple 在他们的示例中执行此操作的方式(我不再记得那是什么项目名称):

1.注册键盘通知(键盘每次出现或隐藏时都会发送通知):

[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWasShown:)
name:UIKeyboardDidShowNotification object:nil];

[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillBeHidden:)
name:UIKeyboardWillHideNotification object:nil];

2.获取键盘的大小(您对高度感兴趣)并在该点不包含在 View 中时滚动:

- (void)keyboardWasShown:(NSNotification*)aNotification
{

NSDictionary* info = [aNotification userInfo];
CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
// If active text field is hidden by keyboard, scroll it so it's visible
CGRect aRect = self.view.frame;
aRect.size.height -= kbSize.height;

CGPoint point;

point = CGPointMake(0, activeTextField.frame.origin.y + activeTextField.frame.size.height);

if (!CGRectContainsPoint(aRect, point ))
{
CGPoint scrollPoint = CGPointMake(0.0, activeTextField.frame.origin.y+activeTextField.frame.size.height-kbSize.height);
[scrollView setContentOffset:scrollPoint animated:YES];
}

不要忘记在隐藏键盘时做相反的事情,如果你推送到另一个 View Controller 则移除观察者。此示例与 UIScrollView 上的文本字段一起使用,但我相信您可以轻松地对其进行调整。

就我个人而言,如果我还管理 Web 端,我更喜欢创建 320 像素宽的网页,设置我的 webView sizeToFit,将其添加到 UIScrollView 之上并从那里管理滚动。对于 textFields,我只需使用 javascript 获取所选 textField 的容器并获取它的坐标。

关于ios - 在 UIWebView 中管理垂直滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10097945/

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