HPGrowingTextView - " textInputView.frame.origin.y"是正确的,但文本字段实际上没有移动 - 有时

时间:2015-03-24 11:17:31

标签: ios keyboard uitextview uitextinput

我正在调试其他人的代码 - 抱歉,我的Objective-C体验非常有限。

#pragma mark - Keyboard events

- (void)keyboardWasShown:(NSNotification*)aNotification
{
    NSDictionary* info = [aNotification userInfo];
    CGSize kbSize = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size;
    NSLog(@"Keyboard a Notification user Info %@", info);

    printf("keyboardWasShown \\\\\\\\\\\\\\\\\\\\\n");
    NSLog(@"textInputView: y: (%.f), height: (%.f), kbHeight: (%.f)",
        textInputView.frame.origin.y, textInputView.frame.size.height, kbSize.height);

    [UIView animateWithDuration:2.0f animations:^{
        if (keyboardNewLine){
            bubbleTableFrame = originalBubbleTableFrame;
        }
        CGRect frame = originalTextViewFrame;
        int difference = 0;

        if (IsIphone5){
                difference = -42;
                frame.origin.y -= kbSize.height + difference;

        } else {
            if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0f) {
                difference = 42;
                frame.origin.y -= kbSize.height + difference;
            } else {
                frame.origin.y -= kbSize.height + 110;
                difference = 42;
            }
        }
        textInputView.frame = frame;

        frame = bubbleTableFrame;
        frame.size.height -= kbSize.height + difference;
        bubbleTable.frame = frame;
    }];

    NSLog(@"textInputView: y: (%.f), height: (%.f), kbHeight: (%.f)",
          textInputView.frame.origin.y, textInputView.frame.size.height, kbSize.height);
    printf("keyboardWasShown //////////\n");

    [bubbleTable scrollBubbleViewToBottomAnimated:YES];
}

当我点击文本输入字段以调出键盘时,字段应该向上移动到键盘上方 - 有时。这一切都取决于首先加载哪个键盘。

  1. 没有键盘的文字字段:
  2. https://dl.dropboxusercontent.com/u/674780/img/stackoverflow/1.png

    1. 点击文字字段后,我希望:
    2. https://dl.dropboxusercontent.com/u/674780/img/stackoverflow/2.png

      1. 但是文本字段位于屏幕底部,只留下占位符:
      2. enter image description here

        1. 奇怪的是,如果我向下拖动QuickType行,文本字段会突然出现!
        2. enter image description here

          1. 但是如果我从这个视图中退出并且之后再回来,那么文本字段会再次卡在底部(猜猜是什么,如果我向上拖动QuickType行,它会跳起来):
          2. enter image description here

            1. 通过点击地球图标切换到另一个键盘(输入法)总是有助于调出文本字段:
            2. enter image description here

              1. 似乎第三方键盘不受影响:
              2. enter image description here

                你可以看到我一直在监视 textInputView.frame.origin.y 以查看出现了什么问题。它从472(无键盘)变为261(英文键盘),但文本字段根本没有上升。

                我不认为它位于占位符后面(如果有的话),因为当我点击气泡旁边的白色区域时,键盘会向下移动并显示粘在底部的文本字段。

                有人建议添加setNeedsDisplay,setNeedsLayout等,但没人帮忙。

                提前致谢。

1 个答案:

答案 0 :(得分:0)

最终我按照某人的建议关闭了自动布局: https://www.facebook.com/groups/cocoahk/permalink/1104922892867587/

有效。虽然我需要调整所有其他物体的位置。