1

我有一个正在使用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 左右)。

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

4

0 回答 0