UIWebView在文本域焦点后滚动

我在屏幕上有UIViewUIWebView 。 当我点击网站上的文本字段时,网页视图内容就会上升。 我怎么能强迫UIView移动呢?

您可以订阅UIKeyboardWillShowNotificationUIKeyboardDidShowNotification ,并在收到通知时移动您的UIView 。 此过程在此处描述:

适用于iOS的文本,Web和编辑编程指南 :“移动位于键盘下的内容”

也许这有帮助:我不想让UIWebView完全滚动,包括专注于文本字段。

您必须是UIWebView的委托:

 _webView.scrollView.delegate = self; 

然后添加此方法

 - (void)scrollViewDidScroll:(UIScrollView *)scrollView { scrollView.contentOffset = CGPointZero; } 

UIWebView有一个回调:

 - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 

只要加载新的URL请求,就会触发此操作。 从javascript开始,您可以在标记的onfocus事件上触发新的请求URL,其自定义模式如下:

 window.location = "webViewCallback://somefunction"; 

这是一个脚本,可以将您的自定义事件放入任何要加载的html页面中。

在将它加载到UIWebView之前,您必须获取整个HTML,如下所示:

 NSString *html = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"your URL"] encoding:NSUTF8StringEncoding error:nil]; 

然后在适当的位置在HTML文本中插入以下内容:

  

然后,在回调上你应该做这样的事情:

 -(BOOL) webView:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest *)inRequest navigationType:(UIWebViewNavigationType)inType { if ( [[inRequest URL] scheme] == @"webViewCallback" ) { //Change the views position return NO; } return YES; } 

而已。 希望能帮助到你。

哇,前几天我遇到了同样的问题,真的很烦人。 我发现window.yPageOffset正在改变,但据我所知,当它改变时没有任何事件要绑定。 但也许它会以某种方式帮助你。 😉

我认为你覆盖了scrollViewDidScroll错误。 您需要为UIWevView实现自定义类并覆盖scrollViewDidScroll

  - (void) scrollViewDidScroll:(UIScrollView *)scrollView{ [super scrollViewDidScroll:scrollView]; [((id)self.delegate) scrollViewDidScroll:scrollView]; }