2012-02-27 26 views
0

でフォトギャラリーのような特定の領域にタッチイベントを取得し、そこにあるいくつかのUiButtonさんや他のイベントとUiImageView。画像は画面全体をカバーしています。画面の上部または下部の領域に触れると(上部の領域に1つのボタンがあることを意味します)、画像は特定のサイズにサイズ変更されます。(のObjective-Cでの)iPhone/iPad用の私のアプリでは、iPhone

iPhoneのフォトギャラリーのように、上部の領域に触れているかどうかを認識できません。上部/下部の領域にタッチすると、ナビゲーションボタンが表示されます。アプリ)。

私はすでに私のアプリでタッチイベントがあります

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {} 
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {} 
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {} 

誰かが任意のアイデアや解決策を持っている場合は私に知らせてください。

+0

を押すところナビゲーションが表示されますフォトギャラリーでは、上下の領域だけでなく、 – rckoenes

+0

はい、フォトギャラリーでは、iphoneの下部にタッチすると、ナビゲーション領域が表示されます。そうでない場合は、フルスクリーンで画像が表示されます。アプリ。 –

+0

画像の中央をタップすると、ナビゲーションも表示されます。もう一度タップするとナビゲーションが消えます。したがって、ユーザーがビューの下または下の領域でタップしたかどうかを検出する必要はありません。ユーザーがビュー内の任意の場所をタップしたかどうかを検出するだけです。 – rckoenes

答えて

1

最も明白な解決策は、それがtouchesBegunだオーバーライドし、その後、UIImageViewをサブクラス化することです:withEvent:方法と実際のタッチが起こったそのメソッドチェックで:

- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    UITouch * touch = (UITouch *)[touches anyObject]; 
    CGPoint location = [touch locationInView:self]; 

    if (location.y > some_arbitrary_value || location.y < some_other_arbitrary_value) 
    { 
     //touched upper or lower part 
    } 

} 
+0

私はこれを試しましたが、実行時に生成されるいくつかの動的コントロールがあるので、領域を制限するための具体的なポイントはありません。 –

+0

だから?これらのコントロールのフレームを取得して、この関数で使用してください。 –

+0

こんにちは...ありがとう、それは今完璧に動作します。もう1つの質問があります---私のアプリでは、userinteractionenabled = trueのときにUIScrollViewer(uiimageview in this)があり、アプリでタッチイベントが発生しません。 userinteractionenabled = trueでタッチイベントを有効にするにはどうすればいいですか? –

関連する問題