1

を含むUIViewという名前のプロパティがあります。をアニメーション化すると(タップすると表示され、徐々に消えていきます)、 がタッチに反応しません。私が使用しているコードは次のとおりです。viewToFadeUISegmentedControlUIViewUISegmentedControl

-(void)fadeView
{
self.viewToFade.alpha=1;
self.viewToFade.hidden=NO;

//When I comment the following lines out, everything is fine--the `UISegmentedControl` responds as it should.  
//But when I include them, the `UISegmentedControl` doesn't register changes/taps.

[UIView animateWithDuration:0.3
                      delay: 3.0
                    options:UIViewAnimationOptionAllowUserInteraction
                 animations:^{
                     self.viewToFade.alpha = 0.0;
                 }
                 completion:nil];
}

私は何を間違っていますか?

(関連がある場合は、 xib ファイルでUIViewと のUISegmentedControl両方が作成されていると言います。)

編集:私は問題に対処する方法を考え出しました。それは、次のようにコードを書き直すことでした:

-(void)fadeView
{
self.viewToFade.alpha=1;
self.viewToFade.hidden=NO;
[self performSelector:@selector(disneyfy) withObject:nil afterDelay:(3)];
} 

-(void)disneyfy
{
    [UIView animateWithDuration:0.3
                 animations:^{
                     self.viewToFade.alpha = 0.0;
                 }];
}
4

1 に答える 1

1

私はサンプルプロジェクトでこれをいじり、あなたの結果を複製することができました.ボタン自体をアニメーション化することさえ何もしませんでした. ただし、私の限られたテストでは、強調表示に反応することがわかりました。

以下をテストしました(UIButtonを使用して、セグメント化されたコントロールでも同じことが機能すると仮定します):

  • ボタンの上に透明なビューを追加し、アニメーションの直前にジェスチャ認識機能を追加します

  • タップ レコグナイザーの actionMethod でボタンの強調表示をオンに変更し、ブロックをディスパッチして 100 ミリ秒程度でオフにします (実際にタッチをインターセプトすると、より洗練されたものになる可能性があります)。

  • 強調表示の変更に加えて、次のようなものをコントロールに送信します (再びボタンを使用)。

    [tapButton sendActionsForControlEvents:UIControlEventTouchUpInside];
    

アニメーション中にコントロールがそのようなものに反応しているようです。

于 2012-09-07T13:34:44.610 に答える