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进行一些操作,不仅是这些通知,而且这非常有帮助。谢谢-赏金是你的。