0

我想在键盘出现时调整 UITextView 的大小,但我似乎无法做到这一点。我创建了一个带有 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中,我说text view和superview之间的margin可以大于等于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)]>

我不确定如何确保满足所有约束。谁能帮我解决这个问题?

谢谢!

4

2 回答 2

8

在 iOS7 中,设置 UIEdgeInsets 可能比调整视图大小更好,因为我们有时会处理半透明。在某些应用程序中,我们仍然希望看到文本在工具栏、键盘或其他 UI 覆盖层中滚动。另一个好处是动画通常不需要更改内容插图,因为这发生在“幕后”。

Apple 在他们的开发者资源中提供了一个非常简单和优雅的解决方案,尽管它有些隐藏并且很难找到。这是一个链接:

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

完整的代码片段请参见清单 5-1。

于 2013-09-30T21:09:17.907 回答
-1

可能的重复

出现键盘时如何在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

}
于 2013-01-03T15:48:28.160 回答