0

内部に UIView を持つ UIScrollView があります。この UIScrollView を、ストーリーボード エディターで画面の半分ほど下に配置しました。デフォルトでは、本来あるべき場所に表示されますが、アプリを実行したときにユーザーの操作に応答しません。ストーリーボードの自動レイアウトをオフにすると、インタラクションは機能しますが、ビューは自動的に画面の上部に移動します。または、自動レイアウトをオンのままにして、viewDidLoad に次のコードを挿入することもできます。

scrollView.translatesAutoresizingMaskIntoConstraints = NO;
noteContainer.translatesAutoresizingMaskIntoConstraints = NO;

NSDictionary *viewsDictionary;
viewsDictionary = NSDictionaryOfVariableBindings(scrollView, noteContainer);
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[scrollView]|" options:0 metrics: 0 views:viewsDictionary]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[scrollView]|" options:0 metrics: 0 views:viewsDictionary]];
[scrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[noteContainer]|" options:0 metrics: 0 views:viewsDictionary]];
[scrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[noteContainer]|" options:0 metrics: 0 views:viewsDictionary]];

この場合、スクロール ビューはインタラクションに応答しますが、再び自動的に画面の上部に移動します。ばかげてイライラします。

4

2 に答える 2

1

回避策は、目的の場所に配置された汎用 UIView 内にスクロールビューを配置することです。

于 2013-11-15T00:28:28.530 に答える
1

画面の上部に移動します(画面のサイズです)。これは、制約で実行するように指示したためです。

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[scrollView]|" options:0 metrics: 0 views:viewsDictionary]];

その制約は、スクロール ビューが画面の上部と下部の両方に 0 の距離を持つようにすることを示しています。必要に応じて、上から 150 ポイントと言って、下までずっと下に移動するには、次のようにする必要があります。

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-150-[scrollView]|" options:0 metrics: 0 views:viewsDictionary]];
于 2013-11-15T04:18:40.603 に答える