0

まず、Objective-Cから始めます。

これが私のプロジェクトのレイアウトです:mainView>mainView内のScrollView>ScrollView内のImageView

mainViewとscrollViewの両方がストーリーボードで作成されます。すべてのimageViewは、プログラムによって、scrollViewのサブビューとして作成されます。

ViewControllerという名前のクラスは1つだけです。

これが私の質問です:scrollView内のImageViewでシングルタッチを処理するにはどうすればよいですか?不明な点がある場合はお知らせください。

アップデート:

NSString *imagePath = [NSString stringWithFormat:@"%@/%@ (%i).png", path, path, nbrImage];
            CGRect myImageRect = CGRectMake(40, 25 + (line*lenght), 75, 75);
            self.img = [[UIImageView alloc] initWithFrame:myImageRect];
            [self.img setImage:[UIImage imageNamed:imagePath]];

            UITapGestureRecognizer* singleTapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];
            singleTapGestureRecognizer.numberOfTapsRequired = 1;
            singleTapGestureRecognizer.numberOfTouchesRequired = 1;     
            singleTapGestureRecognizer.cancelsTouchesInView = NO;
            [self.img addGestureRecognizer:singleTapGestureRecognizer];

            [self.scrollView addSubview:self.img];

- (void)handleSingleTapFrom:(UITapGestureRecognizer*)recognizer {

   UIImageView* imageView = (id)recognizer.view;
   NSLog(@"Test");
}

編集:それは機能します、@ selectorで私はhandleSingleTapFromの代わりにhandleSingleTapを書きました:

4

2 に答える 2

1

UIControl を imageView に追加して、1 回のタッチに応答して任意のセレクターを実行できます。背景色をクリアに設定し、フレームをimageView.frameに設定し、コントロールをimageViewのサブビューとして追加して、

[myControl addtarget:self action:@selector(whateverYouWantToDo) forControlEvents:UIConntrolEventTouchUpInside];

編集:

UIControl *myControl = [[UIControl alloc] initWithFrame:imageView.frame]; 
[myControl setBackgroundColor:[UIColor clearColor]]; 
[myControl addTarget:self action:@selector(doWork) forControlEvents:UIControlEventTouchUpInside]; 
[imageView addSubview:myControl]; 

次に、doWork メソッドを実装して、やろうとしていることを何でも実行します。私はあなたの質問を誤解しているかもしれませんが、ユーザーがスクロールビューで画像に触れたときにアクションを実行したい場合、これが私が行った方法です。

于 2012-05-09T19:08:20.703 に答える
1

を使用しUITapGestureRecognizerます。例えば、

    UITapGestureRecognizer* singleTapGestureRecognizer = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)] autorelease];
    singleTapGestureRecognizer.numberOfTapsRequired = 1;
    singleTapGestureRecognizer.numberOfTouchesRequired = 1;     
    singleTapGestureRecognizer.cancelsTouchesInView = NO;
    [imageView addGestureRecognizer:singleTapGestureRecognizer];

ハンドラー メソッドを使用する場合:

- (void)handleSingleTapFrom:(UITapGestureRecognizer*)recognizer {

    UIImageView* imageView = (id)recognizer.view;
    ...
}
于 2012-05-09T19:11:02.400 に答える