私はUIViewのカスタムサブクラスとその上に背景イメージを持つフルスクリーンUIButtonを持っています。右側に というUIViewとUIImageViewがありますそれ以外の重要なラベルやボタンはありません。重要なのは、UIViewに2つのスクロールビューがあり、実行時に垂直スクロールが有効になっているスクロールビューにUIButtons(小さいものではなく、200 x 100)を追加することです。 状況は本当に非常に複雑なので、さまざまな条件で何が起こるかはアイテムとして書きます。私のアプリケーションでは、UIViewのカスタムサブクラスにこれらの完全なスクリーンが10あり、UIPanGestureRecognizerを使用して1つから他のものにスクロールしています。これにはスクロールビューを使用しないのがよい理由があります。すべてのウィンドウ(UIWindowではなく、下の画像)はループ内で内容を取り込むため、実行中のコードはすべて同じですが、すべて同じ.xibファイルから作成されます。そして最後の情報は、すべてのウィンドウをカバーする大きなUIButtonがtouchupinsideのアクションを持ち、スクロールビューの小さなボタンが独自のtouchupinsideセレクターを持っています。uiscrollviewとuibuttonはタッチイベントに対して透過的に動作します
- 私のウィンドウの中には、画面上のどこかをタッチすると、より大きなボタンアクションが呼び出されます。タッチしてドラッグするとスクロールが動作し、次の/前のウィンドウに移動しますスクロールビューの小さいボタンでは、そのアクションが発生し、最後にそれらのボタン内を完全にスクロールできます。
- 私のウィンドウの中には、スクロールビューをスクロールしようとすると、大きなウィンドウのpangesturerecognizerが小さなスクロールビューではなく、このイベントをキャッチします。スクロールビューの小さなボタンに触れると、大きなボタンイベントが発生しますuibutton> uiscrollview> uiimageview>ボタンのuibuttonにuiviewが存在しないようにボタン
- 右のコンテナのビューを大きなuibuttonの別の位置に置き換えると、ランダムにうまく動作するかどうか、時にはscrollviewsが動作します他の人はそうではありません。
- これは一貫性のある動作をします。ある位置にあれば動作し、動作しますが、動作しない場合は動作しません。
- また、すべてのビューとサブクラスではユーザーインタラクションが有効になっています。ビヘイビアは大きなuibuttonのコンテナビューの位置に応じて変更されるだけでなく、大きなuibuttonsバックグラウンドイメージに応じて変更されるため、
- 私はtouchesBeganメソッドをテスト目的のために配置しました。タッチが期待どおりに機能しない場合、touch.viewで発生したイベントはスクロールビュー内の小さなボタンをタッチしても大きなボタンのコンテナです。
私はすでに2日間過ごしていますが、結果はありません。この現象は何が起こる可能性がありますか?
EDIT:krumelurのコメント後、これらのビューの設定からアニメーションにフォーカスを変更しました。私はコンテナビューに与えました。私は気づいています、問題はアニメーションについてです、私はコードを追加しています10個のウィンドウをすべてアニメーション化し、カスタムスクロールビューのように動作する部分。すべてのウィンドウにカスタムレイヤークラスがあり、Pangesture Recognizerをキャッチすると、次のコードで画面上のウィンドウを移動します。そのコード内の項目は、すべてのウィンドウのレイヤーを保持する配列です。アニメーションは、その奇妙な状況が発生するが、私は、私はタッチイベントに行く、でも私はCATransform3DMakeTranslation
とlayer.zPosition
設定でビューを送り返す、ということを考え出しまし把握couldntのはまだ最後に...
- (void)layoutSublayers {
[super layoutSublayers];
[CATransaction begin];
[CATransaction setDisableActions:YES];
float angleDelta = 2 * M_PI/[items count];
float a = angle;
for (UIBaseLayer *l in items) {
l.position = self.position;
CATransform3D translation = CATransform3DMakeTranslation(cosf(a)*(radius.x), 1.0, (sinf(a)*radius.y) - radius.y*1.0);
float dailyAngle = (M_PI_2 - a);
CATransform3D rotation = CATransform3DMakeRotation(dailyAngle, 0, 1.0, 0);
CATransform3D t = CATransform3DConcat(rotation, translation);
l.transform = t;
a += angleDelta;
}
[CATransaction commit];}
http://img836.imageshack.us/img836/296/screenshot20111215at013.png
私はあなたを苛立たせたくありませんが、あなたの質問は複雑であり、徹底的な答えのための情報があまりにも少ないと言います。間違っていることが多いので、問題が何であるかを伝えることは不可能です。 UIScrollViewのいくつかのプロパティが正しく設定されていない、誤って配線されたイベントハンドラ、ビューのzオーダーが混在する可能性があります。 私はデバッグの基本を提案します:それを簡素化します。それを壊す。不要なコントロールを削除します。あなたのデザインを考え直してください。やり直してください。 – Krumelur