2

在 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 在运行时似乎没有调整大小,并且键盘隐藏了屏幕下部的文本。我的代码或这种方法有问题吗?

4

3 回答 3

2

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

它是动画前与动画后的事情。

升级到 iOS7.0 后,代码现在可以正常工作,正如文档中所说的那样,但这也意味着他们引入了行为中断。

于 2014-03-29T23:12:08.137 回答
1

你还记得在 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];

}

于 2013-09-25T22:28:17.590 回答
0

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

于 2013-09-25T20:49:45.310 回答