我已经进行了足够大的研究,但找不到我的问题的答案。
假设我webView
有一些文本字段,其中一些被放置在屏幕底部,这样当键盘出现时它应该隐藏这些字段。键盘出现后,webView
幻灯片的内容会向上滑动,以使该字段可见。问题是我不希望内容向上滑动。
问题是:我怎样才能禁用该功能webview
,或以某种方式使内容不向上滚动。???
谢谢,任何帮助将不胜感激。
我已经进行了足够大的研究,但找不到我的问题的答案。
假设我webView
有一些文本字段,其中一些被放置在屏幕底部,这样当键盘出现时它应该隐藏这些字段。键盘出现后,webView
幻灯片的内容会向上滑动,以使该字段可见。问题是我不希望内容向上滑动。
问题是:我怎样才能禁用该功能webview
,或以某种方式使内容不向上滚动。???
谢谢,任何帮助将不胜感激。
如果您想禁用所有滚动,包括在表单字段之间导航时的自动滚动,设置webView.scrollView.scrollEnabled=NO
并不能完全涵盖所有内容。这会停止正常的点击和拖动滚动,但不会在您浏览 Web 表单时自动将字段滚动到视图中。
此外,当键盘出现时UIKeyboardWillShowNotification
,watch for可以防止滚动,但如果键盘已经从编辑不同的表单字段中启动,那将无济于事。
以下是如何通过三个简单的步骤来防止所有滚动:
1)创建 UIWebView 后,禁用正常滚动:
myWebView.scrollView.scrollEnabled = NO;
2)然后将您的视图控制器注册为滚动视图的委托:
myWebView.scrollView.delegate = self;
(并确保添加<UIScrollViewDelegate>
到您的类的@interface
定义中以防止编译器警告)
3)捕获并撤消所有滚动事件:
// UIScrollViewDelegate method
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
scrollView.bounds = myWebView.bounds;
}
我认为这门课应该可以帮助您解决问题。它向上滚动内容,因此如果您在屏幕底部有文本字段,它会将其移动到键盘上方。
我为我找到了解决方案。我只是在向上滚动后再次向下滚动。UIKeyboardWillShowNotification
首先我通过添加观察者来
捕捉通知,[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
然后实现方法:
-(void)keyboardWillShow:(NSNotification*)aNotification{
NSDictionary* info = [aNotification userInfo];
float kbHeight = [[NSNumber numberWithFloat:[[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size.height]floatValue];
float kbWidth = [[NSNumber numberWithFloat:[[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size.width]floatValue];
BOOL keyboardIsVisible=[self UIKeyboardIsVisible];
//Check orientation and scroll down webview content by keyboard size
if(kbWidth==[UIScreen mainScreen].bounds.size.width){
if (!keyboardIsVisible) {
[[chatView scrollView] setContentOffset:CGPointMake(0, -kbHeight+10) animated:YES];
} //If is landscape content scroll up is about 113 px so need to scroll down by 113
}else if (kbHeight==[UIScreen mainScreen].bounds.size.height){
if (!keyboardIsVisible) {
[[chatView scrollView] setContentOffset:CGPointMake(0, -113) animated:YES];
}
}
}
这不是我所要求的,但帮助我解决了我的问题。
谢谢。
最初,我希望在关注输入字段(在我的情况下为评论部分)时阻止我的 webview 放大。整个视图会自动放大,让一切都乱七八糟。我设法做到了这一点,同时我也让 webview 停止向上滚动并避开软键盘:
//Stop the webview from zooming in when the comments section is used.
UIScrollView *scrollView = [_webView.subviews objectAtIndex:0];
scrollView.delegate = self;
//_webView.scrollView.delegate = self; //for versions newer than iOS5.