当键盘popup自动布局时调整UITextView的大小

我想调整一个UITextView时,键盘出现,但我似乎无法做到这一点。 我创build了一个UITextView的单一视图。 在代码中,我想手动调整这个文本视图的高度。 我这样做:

_textView.translatesAutoresizingMaskIntoConstraints = NO; NSLayoutConstraint *constraint = [NSLayoutConstraint constraintWithItem:_textView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0f constant:216.0f]; [_textView addConstraint:constraint]; 

在Interface Builder中,我说文本视图和超级视图之间的边距可以大于或等于0。

当我运行应用程序,它给出的约束不能同时满足的错误:

 "<NSLayoutConstraint:0x886e550 V:[UITextView:0x7b0fa00(216)]>", "<NSLayoutConstraint:0x886f7c0 UITextView:0x7b0fa00.bottom == UIView:0x886e3c0.bottom>", "<NSLayoutConstraint:0x886f700 V:|-(0)-[UITextView:0x7b0fa00] (Names: '|':UIView:0x886e3c0 )>", "<NSAutoresizingMaskLayoutConstraint:0x71a2d10 h=--- v=--- V:[UIWindow:0x8a792f0(480)]>", "<NSAutoresizingMaskLayoutConstraint:0x71a1490 h=-&- v=-&- UIView:0x886e3c0.height == UIWindow:0x8a792f0.height - 20>" Will attempt to recover by breaking constraint <NSLayoutConstraint:0x886e550 V:[UITextView:0x7b0fa00(216)]> 

我不确定如何确保所有的约束都满足。 有谁能帮我一下吗

谢谢!

可能的重复

如何在键盘出现时在iOS上调整UITextView? ?

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:self.view.window]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:self.view.window]; - (void)keyboardWillShow:(NSNotification *)notif { [thetextView setFrame:CGRectMake(20, 49, 280, 187)]; //Or where ever you want the view to go } - (void)keyboardWillHide:(NSNotification *)notif { [thetextView setFrame:CGRectMake(20, 49, 280, 324)]; //return it to its original position } 

对于iOS7,设置UIEdgeInsets可能会更好,而不是调整视图的大小,因为我们有时处理半透明。 在某些应用程序中,我们仍然希望文本可以通过工具栏,键盘或其他UI叠加进行滚动。 另一个好处是,animation通常不需要在“幕后”发生内容更改。

苹果公司提供了一个非常简单和优雅的解决scheme在他们的开发资源,虽然它有点埋没,很难find。 这是一个链接:

https://developer.apple.com/library/ios/documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/KeyboardManagement/KeyboardManagement.html

请参阅清单5-1以获得完整的代码片段。