8

私はこれが多くのことについて話されていることを知っています。私はこのサイトのすべての質問に目を通したと思いますが、まだこれを機能させることができていません.

私は開発を始めたばかりですが、すべてのコードで何が起こっているのかをよく理解しています。私は間違いなく多くの経験を持っていませんが、これは私の最初の iPhone アプリです。

UIScrollView 内の複数の UITextFields で構成されるデータ入力フィールドを作成しています。非常に基本的な問題のように見えるので、今のところ他の詳細については説明しません。スクロールビューがなければ、テキストフィールドは完全に機能します。テキストフィールドに触れると、キーボードまたはピッカー ビューが適切に表示されます。テキストフィールドをスクロールビューに追加すると、スクロールビューは機能しますが、テキストフィールドにタッチが反映されません。
キーは次のとおりです。「ユーザーインタラクション」が有効になっている場合、スクロールビューは機能しますが、テキストフィールドのタッチは登録されません。「ユーザー インタラクション」が無効の場合、スクロール ビューは機能しませんが、テキスト フィールドのタッチが登録され、キーボード/ピッカーがポップアップします。

他の投稿から、人々がサブクラスを作成し、別の実装でタッチをオーバーライドしているのを見てきました。カスタム コンテンツ ビュー (サブビュー?) を使用している人を見てきました。新しいバージョンの SDK で API が変更されたため、現在は廃止されているソリューションもいくつか見てきました。

私のコードを必要とせずに誰かが持っている解決策があるかもしれないので、私は今のところ私のコードを省略します。誰かが私のコードを見る必要がある場合は、それを掲載します。私のアプリは 3.1.3 SDK で作成されています。

誰かが役立つ情報を持っている場合は、非常に高く評価されます。

4

3 に答える 3

9

これが私のために働いたものですXcode 4.3.3

ストーリーボードで、 を選択しますscrollviewAttribute Inspector右側を選択します。チェックを外しますDelays Content Touches

于 2012-09-14T04:08:14.743 に答える
0

必要に応じて、スクロール ビューとテキスト フィールドの両方でユーザー操作を有効または無効にする必要がある場合があります。

可能であれば、プロセスごとに異なるタッチメカニズム (スクロールとテキストフィールド入力) を使用することをお勧めします。

ドラッグ (スクロール) とタップ (テキスト入力) の違いを検出できるように、タッチの開始と終了の時間差を確認できます。

テキストフィールドからスクロールビューにタッチアップを伝播すれば、問題ないはずです。私が使用するものの1つは次のとおりです。

[myObject addTarget:self action:@selector(itemTouchedUpInside:) forControlEvents:UIControlEventTouchUpInside];

触れたオブジェクトを通過させるので、それを識別してそれに応じて行動できます。

于 2012-01-10T17:27:43.883 に答える
0

IB を使用して多くの UI レイアウトを行っているようです。プログラムによるアプローチを採用する場合は、次のビュー階層を設定して動作させることができます。

スクロール ビューとテキスト フィールドを管理するビュー コントローラー オブジェクトには、UIScrollView(必要UIViewなオブジェクトに加えてUITextField) オブジェクトと オブジェクトが必要です。ビュー コントローラ クラスの loadView メソッドで、UIViewオブジェクトを割り当てて初期化し、テキスト フィールドをサブビューとして追加します。メソッドの最後で、オブジェクトを割り当てて初期化し、サブビューとしてUIScrollViewに追加しますUIViewUIScrollView

例として、UIScrollViewオブジェクトが scrollView と呼ばれ、オブジェクトが mainView と呼ばれる場合UIView、View Controller の loadView メソッドの末尾にある次の行は、テキスト フィールドを含むメイン ビューでスクロール ビューを適切にセットアップします。

scrollView = [[UIScrollView alloc] initWithFrame: [[UIScreen mainScreen] bounds] ];
scrollView.backgroundColor = [UIColor whiteColor];
scrollView.contentSize = mainView.frame.size;
[scrollView addSubview: mainView];
self.view = scrollView;
于 2010-07-22T19:55:37.607 に答える