アイデアは、文字が入った小さな円にドラッグ アンド ドロップ機能を実装することです。簡単そうですが、すぐにはできませんでした。問題は、小さな円を表す UIImageView がパンにまったく反応しないことです。ここに私が書いたコードがあります:
- (void)createLiterasAndPlacesForThemForCard:(UIView *)frontCard andWord:(NSString *)word;
for (int i=0; i<[word length]; i++) {
UIImageView * oneChar = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"LetterFull"]];
oneChar.frame = CGRectMake(26+i*24, 175, 23, 24);
oneChar.backgroundColor = [UIColor clearColor];
oneChar.userInteractionEnabled = YES;
UIPanGestureRecognizer * oneCharPanGestureRecognizer = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(move:)];
[oneCharPanGestureRecognizer setMinimumNumberOfTouches:1];
[oneCharPanGestureRecognizer setMaximumNumberOfTouches:1];
[oneCharPanGestureRecognizer setDelegate:self];
[oneChar addGestureRecognizer:oneCharPanGestureRecognizer];
[frontCard addSubview:oneChar];
}
ここに階層があります - 上記の「self」と呼ばれるviewControllerがあり、いくつかのカードを含むスクロールビューが含まれ、各カードにはドラッグできる小さな円があります。デリゲートを設定している行で警告が表示されますが、実際の問題ではないと思います。
「move:」メソッドのコードは次のとおりです。
- (void)move:(id)sender
{
NSLog(@"THE PAN OCCURED");
float firstX;
float firstY;
CGPoint translatedPoint = [(UIPanGestureRecognizer*)sender translationInView:self.view];
if([(UIPanGestureRecognizer*)sender state] == UIGestureRecognizerStateBegan) {
firstX = [[sender view] center].x;
firstY = [[sender view] center].y;
}
translatedPoint = CGPointMake(firstX+translatedPoint.x, firstY+translatedPoint.y);
[[sender view] setCenter:translatedPoint];
}
そして、コンソールでも画面でも、パンに対する反応は見られません。助けてください。自分で解決策を見つけることができません。すでに userInteraction を有効にしていますが、役に立ちませんでした。