【问题标题】:How do I resize UITextview when the Keyboard shows up in iOS 7当键盘出现在 iOS 7 中时如何调整 UITextview 的大小
【发布时间】:2013-09-25 20:22:18
【问题描述】:

在 iOS 6 中执行此操作的旧方法似乎已被 Apple 打破。任何人都可以指导我吗?我查看了苹果的开发人员库,我得到的只是“嵌入 ScrollView 更简单”,我觉得这很荒谬和不必要。有没有人找到方法来完成这项工作?

- (void)keyboardWasShown:(NSNotification *)notification
{
    NSDictionary *info = [notification userInfo];
    CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
    UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, (kbSize.width > kbSize.height ? kbSize.height : kbSize.width), 0);
    self.mainTextView.contentInset = contentInsets;
    self.mainTextView.scrollIndicatorInsets = contentInsets;
}

这对我不起作用。我遇到的问题是 textview 在运行时似乎没有调整大小,并且键盘隐藏了屏幕下部的文本。我的代码或这种方法有问题吗?

【问题讨论】:

  • 您能解释一下“Apple 打破了 iOS 6 中执行此操作的旧方法”吗?
  • 问题已正式编辑:D
  • 你仍然没有解释问题。是不是keyboardWasShown:没有被调用,kbSize是(0, 0),那个设置contentInset突然把文本视图的左上角放在导航栏下面?发生了什么事?
  • 再次编辑。谢谢!
  • 您是否使用调试器获取任何其他信息?方法被调用了吗? kbSize 的值是多少?

标签: ios uitextview ios7 keyboard-events


【解决方案1】:

我在迁移代码时遇到了同样的问题。问题是您使用的是UIKeyboardFrameBeginUserInfoKey 而不是UIKeyboardFrameEndUserInfoKey

这是动画前与动画后的区别。

升级到 iOS7.0 后,代码现在可以按照文档所述运行,但这也意味着他们引入了行为中断。

【讨论】:

    【解决方案2】:

    你还记得在 viewdidLoad 中注册通知吗? (并且不要忘记在 dealloc 中删除它们)

    - (void)viewDidLoad
    {
            [super viewDidLoad];
            // Do any additional setup after loading the view from its nib.
    
            NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
            [nc addObserver:self selector:@selector(keyboardWillShow:) name:
             UIKeyboardWillShowNotification object:nil];
            [nc addObserver:self selector:@selector(keyboardWillHide:) name:
             UIKeyboardWillHideNotification object:nil];
    }
    
    - (void)dealloc {
            [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillShowNotification object:nil];
            [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillHideNotification object:nil];
    

    }

    【讨论】:

      【解决方案3】:

      有一个 UITextViewTextDidBeginEditingNotification 可以用来修改你的文本视图。

      【讨论】:

      • 是的,但我指的是键盘通知路由?
      • 您是否验证过旧方法已被弃用?
      • 嗯
      • 如果您查看头文件但没有看到它,或者头文件中有说明它已经消失的文档。然后就没了。
      猜你喜欢
      • 2011-11-02
      • 1970-01-01
      • 2013-09-28
      • 1970-01-01
      • 2012-12-17
      • 2013-04-09
      • 1970-01-01
      • 2017-05-03
      相关资源
      最近更新 更多