「ロックを解除するスライダー」要素のような UISlider を作成しました。私が書いたアニメーションは、1 つのスライダーだけを指している場合にうまく機能します。しかし、スライダーを動的に作成するには、for ループを使用する必要があります。また、スライダーを作成してスライダーのタグを追加し、次のように for ループ内のスライダーにアニメーション関数を追加すると、アニメーションが機能しません。
for (int i = 0; i < rowCount; i++){
...
UISlider *slider=[[UISlider alloc] initWithFrame:CGRectMake(5+ xInc, 25+yInc, 322, 40)];
//give a id tag to the slider
[slider setTag:i*10];
//set a action to the slider
[slider addTarget:self action:@selector(UnlocklinkSlider:) forControlEvents:UIControlEventTouchUpInside];
...
アニメーション機能は次のとおりです。
- (void)UnlocklinkSlider:(UISlider*)slider
{
for (int i = 0; i < rownumber; i++){
UIImageView *frontimg = (UIImageView *)[self.view viewWithTag:i*10+1];
...
if (slider.tag==i*10) {
if(slider.value >= 0.5){
// user did not slide far enough, so return back to 0 position
[UIView beginAnimations: @"SlideCanceled" context: nil];
[UIView setAnimationDelegate: self];
[UIView setAnimationDuration: 0.35];
// use CurveEaseOut to create "spring" effect
[UIView setAnimationCurve: UIViewAnimationCurveEaseOut];
...
[UIView commitAnimations];
...
}
else{
...
}
}
}
}
しかし、アニメーションはこのようには機能しません。理由を知っている人はいますか?