1

私のアプリでは、次の設定があります。

TextView (self.textView)

ツールバー

キーボードが表示されたら、必要なピクセル数でテキスト ビューの下部を押し上げる制約を追加します。

spacer =[NSLayoutConstraint
                                   constraintWithItem:self.textView
                                   attribute:NSLayoutAttributeBottom
                                   relatedBy:NSLayoutRelationEqual
                                   toItem:self.view
                                   attribute:NSLayoutAttributeBottom
                                   multiplier:1.0
                                   constant:-height];
[self.view addConstraint:spacer];

キーボードが消えたら、制約を外します。

これはうまくいきます。でも...

テキストビューの上にあるイメージビューを追加したい。これは簡単に思えます。しかし、「キーボードを閉じる」のサイズ変更は壊れています。

イメージビューを作成し、テキストビューの境界に固定するために使用するコードは次のとおりです。

self.overlay = [[UIImageView alloc] init];

[self.overlay setTranslatesAutoresizingMaskIntoConstraints:NO];
[self.view addSubview:self.overlay];

[self.view addConstraint: [NSLayoutConstraint
                           constraintWithItem:self.overlay
                           attribute:NSLayoutAttributeBottom
                           relatedBy:NSLayoutRelationEqual
                           toItem:self.textView
                           attribute:NSLayoutAttributeBottom
                           multiplier:1.0
                           constant:0]];
[self.view addConstraint: [NSLayoutConstraint
                           constraintWithItem:self.overlay
                           attribute:NSLayoutAttributeTop
                           relatedBy:NSLayoutRelationEqual
                           toItem:self.textView
                           attribute:NSLayoutAttributeTop
                           multiplier:1.0
                           constant:0]];
[self.view addConstraint: [NSLayoutConstraint
                           constraintWithItem:self.overlay
                           attribute:NSLayoutAttributeLeft
                           relatedBy:NSLayoutRelationEqual
                           toItem:self.textView
                           attribute:NSLayoutAttributeLeft
                           multiplier:1.0
                           constant:0]];
[self.view addConstraint: [NSLayoutConstraint
                           constraintWithItem:self.overlay
                           attribute:NSLayoutAttributeRight
                           relatedBy:NSLayoutRelationEqual
                           toItem:self.textView
                           attribute:NSLayoutAttributeRight
                           multiplier:1.0
                           constant:0]];
[self.view layoutIfNeeded];

表示方法は次のとおりです。

キーボード表示前のイニシャル

キーボード表示前のイニシャル

キーボード表示

キーボード表示

キーボードが取り外されました。レイアウトは初期状態に戻るはずですが、代わりにこれを取得します

初期状態に戻るはずですが、代わりにこれを取得します

4

1 に答える 1