1

touchesBegan と touchesMoved を使用して、UIImageView を画面上のどこにでも移動します。マーカー (移動した UIimageView) を移動し、UIImageview に形状を描画し、グラフを読み取ります。

ただし、ラベルを更新するなど、そのデータで何かをしようとすると、UIImageView は元の場所にとどまるのではなく、開始した場所に戻ります。

-(void) touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event{

UITouch *myTouch =[[event allTouches] anyObject];
CGPoint location = [myTouch locationInView:self.view];

int x = location.x;
int y = location.y;

NSLog(@"x = %i",x);
NSLog(@"y = %i",y);

CGPoint p={x, y};
circles.center = p;

上記のコードは正常に機能し、画像を新しい場所に移動します。ただし、次のような本当に単純なものを追加する必要があります

changeInY.text = [NSString stringWithFormat:@"Main Label"];

UIImageView (円) は .center = p ではなくなりました。ラベルが更新され、UIImageView は、タッチが行われる前にストーリーボードにダンプした場所に急いで戻りました。確かに動きますが、急いで戻ります。ラベルの指示がなければ、そのままの場所にとどまり、次のタッチを完了します。

x 位置と y 位置を提供し、NSLog ステートメントでそれらを出力できますが、それらの値でラベルを更新したり、その UIImageView と関係のないことをしたりすることはできません。実行時に UIImageView を動的に作成したくありません。それを使って動かしたい。circles.center = p 行を変更する必要があると確信していますが、その変更を行ってそこにとどまるように指示する方法がわかりません。

どんな助けでも大歓迎です

4

1 に答える 1

0

考えられるあらゆる方法でコードを約14時間書き直した後、問題のあるラベルを「ビュー」ボックスの上に配置するだけでよいことがわかりました。ある種のレイヤリングの問題がありました。ラベルが非表示の「ビュー」に配置されると、過去2日間に試したコードのほぼすべての組み合わせが機能しました。

于 2012-11-18T20:55:04.697 に答える