当键盘出现在 iOS 7 中时如何调整 UITextview 的大小
Posted
技术标签:
【中文标题】当键盘出现在 iOS 7 中时如何调整 UITextview 的大小【英文标题】:How do I resize UITextview when the Keyboard shows up in iOS 7 【发布时间】: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
的值是多少?
【参考方案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 可以用来修改你的文本视图。
【讨论】:
是的,但我指的是键盘通知路由? 您是否验证过旧方法已被弃用? 嗯 如果您查看头文件但没有看到它,或者头文件中有说明它已经消失的文档。然后就没了。以上是关于当键盘出现在 iOS 7 中时如何调整 UITextview 的大小的主要内容,如果未能解决你的问题,请参考以下文章
当虚拟键盘出现在本机反应中时如何自动向上滚动屏幕(在android上)