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 では、テキスト ビューとスーパービューの間のマージンは 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 オーバーレイをスクロールして表示されるようにする必要があります。もう 1 つの利点は、コンテンツ インセットの変更は「舞台裏」で行われるため、通常、アニメーションは必要ないことです。

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 に答える