2010-12-01 2 views
1

私は次のようにしています:画像の横方向のリストです。例えば、x軸を中心としたフリップイメージ。私はイメージを回転させる方法を知っています。私はスクロールビューを作成し、画像をロードします。画像をタップするとイベントハンドラが追加されました。しかし、私はタップ画像で何かをする方法を知らない。どのようにタップ画像で何かをするメソッドをコード化するには?スクロールビューで選択した画像に何かを実行します

- (void)viewDidLoad { 
    [super viewDidLoad];   

    img1 = [UIImage imageNamed:@"imgTest.jpg"]; 
    img2 = [UIImage imageNamed:@"imgTest2.jpg"]; 

    arrayOfImages = [[NSMutableArray alloc] init]; 
    [arrayOfImages addObject:img1]; 
    [arrayOfImages addObject:img2]; 
    [arrayOfImages addObject:img1]; 
    [arrayOfImages addObject:img2]; 

    scrollView = [[UIScrollView alloc] init]; 
    scrollView.scrollEnabled = YES; 
    scrollView.pagingEnabled = YES; 
    scrollView.directionalLockEnabled = YES; 
    scrollView.showsVerticalScrollIndicator = NO; 
    scrollView.showsHorizontalScrollIndicator = NO; 
    scrollView.delegate = self; 
    scrollView.backgroundColor = [UIColor blueColor]; 
    scrollView.autoresizesSubviews = YES; 
    scrollView.frame = CGRectMake(0, 0, 320, 128); 
    [self.view addSubview:scrollView]; 

    UIImage *imageToAdd; 
    int x = 0; 
    int y = 0; 
    for(imageToAdd in arrayOfImages) 
    { 
     UIImageView *temp = [[UIImageView alloc] initWithImage:imageToAdd];  

     temp.frame = CGRectMake(x, y, 128, 128); 
     temp.userInteractionEnabled = YES;  
     x += 135; 


     UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imageTapped:)]; 
     [temp addGestureRecognizer:tap];  

     [scrollView addSubview:temp]; 
    } 
... 

- (void)imageTapped:(UIGestureRecognizer *)sender 
{ 

    // how to get reference on selected item in scrollview??? 
} 
+0

あなたのコード内のいくつかのメモリリークがあります。それらのUIImageViewsとUITapGestureRecognizersをリリースする必要があります。 –

+0

1110、ジェスチャ認識機能を追加しましたが、imageTappedイベントハンドラを呼び出すことができませんでした。上記のコードを更新する必要がありましたか?ありがとう –

答えて

4

ジェスチャ認識器には、認識器に関連付けられたビューを返すviewプロパティがあります。あなたはUIImageViewあなたは、単にそれをキャストし、のようにそれを使用できるだろうことを知っているので:あなたが知る必要がある場合

UIImage *image = [iv image]; 

UIImageView *iv = (UIImageView *)[sender view]; 

そして、あなたのイメージ、その後経由で照会することができます単純に[arrayOfImages indexOfObject:image];を使用するか、ビューにタグ(番号)を割り当てて使用するかの2つの方法があります。 Appleがタグを使用していないのは、ここだけです。開発者は何らかの方法でビューに「マーク」を付けることができます。

NSInteger counter = 0; 
for(imageToAdd in arrayOfImages) 
{ 
    UIImageView *temp = [[UIImageView alloc] initWithImage:imageToAdd]; 
    count.tag = counter++; 
    ... 
} 

次に、あなたのimageTapped:に、あなたはtagを経由して、インデックスを照会することができます:たとえば

NSInteger index = [imageView tag]; 
関連する問題