0

だから私は それを利用するためにスクロールビューの独自のクラスを生成しなければならなかったUIScrollView 複数のものを持っていますUIImageViewstouchesEnded

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
//    [super touchesEnded:touches withEvent:event];

    UITouch  *touch = [touches anyObject];
    CGPoint   point = [touch locationInView:self];

    if ((int)(point.x / 100) < [[self items] count] ) {
        NSLog(@" ENDED  D    File Selected is   %@     %d   " , [[self items]  objectAtIndex:(int)(point.x / 100) ]   ,  (int)(point.x / 100)   );
    }
//    [[self nextResponder] touchesEnded:touches withEvent:event];
}

items は、NSMutableArray 各サブビューが指すファイルの名前を格納するため、基本的に subview[0] === item[0] など...

subview[0]は画像ビューでitem[0]、 はfileNameその画像の です

私の質問はこれです ファイル xyz が選択されたことを元の発信者に通知するにはどうすればよいですか? ラインとは対照的にNSLog

前もって感謝します

4

1 に答える 1

0

「元の呼び出し元」とはどういう意味ですか? -touchesEnded:withEvent:フレームワークのイベント処理サブシステムによって呼び出されます。

あなたがするかもしれないこと(しかししないでください!以下を見てください)は、既存のデリゲートにいくつかの独自のデリゲートメソッドを追加し(明らかに、UIScrollViewDelegateプロトコルと対応する-[UIScrollView delegate]プロパティがすでに存在します)、代わりに定義したデリゲートメソッドを呼び出すことですあなたのNSLog()最近の回答で、これを行うための控えについて説明しました。

ただし、これはすべて意味がありません。なぜなら、あなたは実際にこれに逆行しており、自分で多くの不要な作業を作成しているからです。サブクラス化が、設計を再検討する必要があるトリガーとなる特定のクラスがあることを前置きします。そして、UIScrollViewそのようなクラスの 1 つです。

オブジェクトのコレクションがあることを既に認識していUIImageViewます。彼らに相互作用を処理させるべきです。一般的な考え方は次のとおりです。

1) 各インスタンスを次のように送信します[imageView setUserInteractionEnabled:YES];。これは、インタラクティブな画像ビューを操作する際に見落とされがちな間違いの 1 つです。

2) 各画像ビューに適切な具象UIGestureRecognizerインスタンスを追加し、ジェスチャ認識機能のコールバックを実装します。古い iOS リリースを絶対にサポートする必要がある場合を除き、明示的なタッチ処理の代わりにジェスチャ認識機能を常に使用するようにしてください。

3) ジェスチャ レコグナイザーのコールバックで、送信ジェスチャ レコグナイザーの に基づいて適切なアクションを実行するロジック コードを追加します-view。(たとえば、対応するビューの-imageまたは-frameを調べ、その情報を使用して、どのイメージがタッチされたかを判断できます。)

ジェスチャ レコグナイザーのコールバックはビュー コントローラーにある可能性が高いため、コードの残りの部分と "対話" するのがはるかに簡単になります。

于 2012-06-19T20:50:49.923 に答える