0

UIImageViewを使用して動的に作成したプロジェクトを開発していますNSMutableArray

このためのコードは次のとおりです。

for (int i = 0; i < index ; i++) {
    image_name= [NSString stringWithFormat:@"%@%dpng.png",[string_values objectAtIndex:0],i+1];

    UIImageView *tempImageView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:image_name]];

    tempImageView.userInteractionEnabled = YES;
    CGSize size2=tempImageView.image.size;
    int width2=size2.width/2;
    int height2 =size2.height/2;
    tempImageView.frame = CGRectMake(xvalue,yvalue,width2,height2);  

    [myArray addObject:tempImageView];
}

その後、サブビューを追加して、次のコードで画面に表示します。

for(int i=0;i<[myArray count];i++) {
    [self.view addSubview:[myArray objectAtIndex:i]];
}

上記のコードはすべて、ニーズに応じて適切に実行されます。touchesBeganメソッドの場合、次のコードを実行しています。

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    printf("the touch is fired");
    for(int i=0;i<[myArray count];i++) {
        [self.view addSubview:[myArray objectAtIndex:i]];
        touchStart = [[touches anyObject] locationInView:[myArray objectAtIndex:i]];
    }
}

touchesBegantouchesBeganメソッドの最初の行を出力した直後に、メソッドが呼び出されるとアプリがクラッシュします。

私はここで問題を抱えており、多くの質問/回答を経験しましたが、実用的な解決策を見つけることができません。どんな助けでもありがたいです。良い返事をありがとう

4

1 に答える 1

0

イメージビューをドラッグ可能にするには、

1)すべてを削除-(void)touchesメソッド

2)UIImageView * tempImageViewを作成した直後にこれらの2行を追加します(ループ内)

 UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handleDrag:)];
[tempImageView addGestureRecognizer:panRecognizer];

3)次に、このメソッドをviewcontroller.mファイルのどこかに追加します

-(void) handleDrag:(UIPanGestureRecognizer *) panGesture{
CGPoint transition = [panGesture translationInView:self.view];
panGesture.view.center = CGPointMake(panGesture.view.center.x + transition.x, panGesture.view.center.y +transition.y);
[panGesture setTranslation:CGPointMake(0,0) inView:self.view];}
于 2013-02-19T13:55:21.710 に答える