0

画像のあるシンプルなものを作成しましUIScrollViewた。画像が押されるたびに、その画像を変更したいのですが、どうすればよいですか?

これを作成し、画像UIScrollViewで初期化NSMutableArrayします。

      UIScrollView *myScroll = [[UIScrollView alloc] initWithFrame: CGRectMake (0,100,200,30)];
        NSMutableArray = *images = [NSMutableArray alloc] initWithObjects: img1,img2,img3,nil];

for (int i=0; i<3; i++)
{
        UIImageView *imageV = [UIImageView alloc];
        [imageV setImage:[images objectAtIndex:i]];
        [myScroll addSubview:imageV];
        [imageV release];
}


    UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget: self action:@selector (changeImg:)];
    [myScroll addGestureRecognizer: singleTap];

そして、私が巻物の触れられた場所で慌てていることを教えています:

- (void) singleTapGestureCaptured:(UITapGesturerecongnizer *) gesture
{
    CGPoint touch = [gesture locationInView:myScroll];

}

タッチしたアイテムのX、Yによって、どの画像が選択されたかがわかります

ここで、たとえばmyScrollの最初の画像を変更する必要があります...どうすればよいですか?

4

3 に答える 3

1

インデックス3にアクセスしているため、アプリケーションがクラッシュしますが、インデックス3にはオブジェクトがありません。

UIScrollView *myScroll = [[UIScrollView alloc] initWithFrame: CGRectMake (0,100,200,30)];
NSMutableArray = *images = [NSMutableArray alloc] initWithObjects: img1,img2,img3,nil];
[myScroll addSubview:[images objectAtIndex:0];
[myScroll addSubview:[images objectAtIndex:1];
[myScroll addSubview:[images objectAtIndex:2];  

これで、tagValueを使用して画像ビューにアクセスできます

-(void)changeImg :(UIGestureRecognizer*)recog
{
    UIScrollView *scroll = (UIScrollView*)recog.view;
    CGPoint point = scroll.contentOffset;
    int imagetag = (point.y/scroll.frame.size.height);

    UIImageView *image=(UIImageView*)[[scroll subviews] objectAtIndex:imagetag];
    NSLog(@"Image tag = %d",image.tag);

    image.image=[UIImage imageNamed:@"Icon-72.png"];
}
于 2012-09-22T12:18:00.843 に答える
1

を追加UITapGestureRecognizerUIImageViewて設定します。userInractionEnabled: YESこれはNOデフォルトで。に設定されていますUIImageView

UIScrollView *myScroll = [[UIScrollView alloc] initWithFrame: CGRectMake (0,100,200,30)];
NSMutableArray = *images = [NSMutableArray alloc] initWithObjects: img1,img2,img3,nil];

for (int i=0; i<3; i++)
{
    //In your question you didn't set `imageView` frame so correct it
    UIImageView *imageV = [[UIImageView alloc]initWithFrame:yourFrame];
    [imageV setImage:[images objectAtIndex:i]];
    [imageV setUserInteractionEnabled:YES];
    UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget: self action:@selector (changeImg:)];
    [imageV addGestureRecognizer: singleTap];
    [myScroll addSubview:imageV];
    [imageV release];
}

すべてを正常に追加imageViewしたら、次のようにクリックします:-

-(void)changeImg:(id)sender
 {
     UIGestureRecognizer *recognizer = (UIGestureRecognizer*)sender;
     UIImageView *imageView = (UIImageView *)recognizer.view;
     [imageView setImage:[UIImage imageNamed:@"anyImage.png"]];
 }
于 2012-09-22T12:25:44.137 に答える
0

カスタムボタンを使用し、そのIBActionでその画像を変更すると、簡単な実装になります。それでも、UIImageViewや

if(recognizer.state == UIGestureRecognizerStateBegan)

実行時にイメージを変更できます。これがお役に立てば幸いです。乾杯!!

于 2012-09-22T12:18:22.080 に答える