重置UIWebView框架可杀死75%的可触摸区域

时间:2013-11-09 01:36:02

标签: ios uiwebview

我有一个正在使用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];
}

这是奇怪的部分:当我这样做时(点击一个输入字段来召唤键盘然后点击“完成”以解除它),除了{{1的左上角四分之一外的所有内容变得无法接触。它看起来很好,完美地上下动画,正确显示内容,但中心点正下方的任何内容都不会响应触摸(即无法按下几个按钮等)。

知道为什么会这样吗?我已经注释掉了行,并确定导致问题的是“self.web.frame”:移除该移动并且工作正常。我还UIWebView了“self.web.scrollView.frame.size.width”和“self.web.scrollView.frame.size.height”值,它们似乎正在按预期更改并返回正常。此外,NSLog方法返回一个正确的值(它根据选择的字段而变化,但通常在-108.5左右)。

那么为什么要来回移动框架会改变视图响应触摸的能力?有什么想法吗?

0 个答案:

没有答案