Apple 6已经打破了在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似乎没有在运行时调整大小,键盘隐藏了屏幕下方的文本。我的代码或这种方法有问题吗?
答案 0 :(得分:2)
我在迁移代码时遇到了同样的问题。问题是您使用的是UIKeyboardFrameBeginUserInfoKey
而不是UIKeyboardFrameEndUserInfoKey
它是动画之前与动画之后的事物。
升级到iOS7.0已使代码现在正如文档所说的那样工作,但这也意味着它们引入了行为中断。
答案 1 :(得分: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];
}
答案 2 :(得分:0)
您可以使用UITextViewTextDidBeginEditingNotification来修改文本视图。