Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UIWebView';在文本字段焦点后滚动_Ios_Objective C_Uiwebview - Fatal编程技术网

Ios UIWebView';在文本字段焦点后滚动

Ios UIWebView';在文本字段焦点后滚动,ios,objective-c,uiwebview,Ios,Objective C,Uiwebview,我在屏幕上有UIView和UIWebView。当我点击网站中的文本字段时,web视图的内容就会上升。那么,我怎样才能强制UIView也移动呢 哇,前几天我也有同样的问题,真的很烦人。我发现window.yPageOffset正在更改,但据我所知,当它更改时没有任何事件可绑定。但也许它会对你有所帮助 UIWebView有一个回调: - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)requ

我在屏幕上有
UIView
UIWebView
。当我点击网站中的文本字段时,web视图的内容就会上升。那么,我怎样才能强制
UIView
也移动呢

哇,前几天我也有同样的问题,真的很烦人。我发现
window.yPageOffset
正在更改,但据我所知,当它更改时没有任何事件可绑定。但也许它会对你有所帮助

UIWebView有一个回调:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
每当要加载新的URL请求时,就会触发此操作。通过javascript,您可以在标记的onfocus事件上触发一个新的请求URL,其自定义模式如下:

window.location = "webViewCallback://somefunction";
下面是一个脚本,用于将自定义事件放入任何要加载的html页面中

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

NSString *html = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"your URL"] encoding:NSUTF8StringEncoding error:nil];
-(BOOL) webView:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest *)inRequest navigationType:(UIWebViewNavigationType)inType {
    if ( [[inRequest URL] scheme] == @"webViewCallback" ) {

        //Change the views position 

        return NO;
    }

    return YES;
}
然后在HTML文本的适当位置插入以下内容:

<script>
    var inputs = document.getElementsByTagName('input');

    for(int i = 0; i < inputs.length; i++)
    {
        if(inputs[i].type = "text")
        {
             inputs[i].onfocus += "javascript:triggerCallback()";
        }
    }

 function triggerCallback()
 {
      window.location = "webViewCallback://somefunction";
 }
</script>

就这样。希望有帮助。

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


也许这有帮助:我根本不希望UIWebView滚动,包括在关注文本字段时

您必须是UIWebView的代表:

_webView.scrollView.delegate = self;
然后添加此方法

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

我认为你把
scrollviewdidcoll
写得太多了。 您需要为
UIWevView
实现自定义类,并覆盖
scrollViewDidScroll

 - (void) scrollViewDidScroll:(UIScrollView *)scrollView{
        [super scrollViewDidScroll:scrollView];
        [((id<UIScrollViewDelegate>)self.delegate) scrollViewDidScroll:scrollView];
    }
-(无效)scrollViewDidScroll:(UIScrollView*)scrollView{
[超级scrollViewDidScroll:scrollView];
[((id)self.delegate)scrollViewDidScroll:scrollView];
}

是的,而且在textfield焦点之后不可能获取uiscrollview事件,这将是获取window.yPageOffset的合适时间。不过还是谢谢你。他的答案比我的简单。只需在您的视图中注册上述通知之一的回调,即可完成。您可以从一个文本字段跳到另一个文本字段,因此需要对UIWebView的UIScrollView进行一些操作,不仅是这些通知,而且这非常有帮助。谢谢-赏金是你的。