我有一个正在使用UIWebView
. 它有一个输入表单,所以我在UIWebView
召唤键盘时将其向上移动,然后在键盘关闭时将其向下移动,以便选定的输入字段居中。下面的代码:
-(void)keyboardWillShow:(NSNotification*) aNotification {
float offset = [self calculateYOffsetForKeyboard];
[UIView animateWithDuration:0.3f delay:0.05f options:UIViewAnimationOptionBeginFromCurrentState animations:^ {
self.web.frame = CGRectMake(webView_rect_x, offset, self.web.scrollView.frame.size.width, self.web.scrollView.frame.size.height);
} completion:nil];
}
-(void)keyboardWillHide: (NSNotification*) aNotification {
[UIView animateWithDuration:0.3f delay:0.05f options:UIViewAnimationOptionBeginFromCurrentState animations:^ {
self.web.frame = CGRectMake(webView_rect_x, 0, self.web.scrollView.frame.size.width, self.web.scrollView.frame.size.height);
} completion:nil];
}
这是奇怪的部分:当我这样做时(点击输入字段以召唤键盘,然后点击“完成”以关闭它),除了左上角的四分之一之外的所有内容都UIWebView
变得不可触摸。它看起来不错,可以完美地上下动画,正确显示内容,但是中心点右侧或下方的任何内容都不会响应触摸(即无法按下多个按钮等)。
知道为什么会发生这种情况吗?我已经注释掉了行并确定它是导致问题的“self.web.frame”:删除该运动并且它工作正常。我还NSLog
设置了“self.web.scrollView.frame.size.width”和“self.web.scrollView.frame.size.height”值,它们似乎正在按预期变化并恢复正常。该calculateYOffsetForKeyboard
方法还返回一个正确的值,(它会根据选择的字段而变化,但通常在 -108.5 左右)。
那么为什么来回移动框架会改变视图响应触摸的能力呢?有任何想法吗?