2012-02-09 7 views
0

私はUIViewというカスタムを持っています。ビューにタップ(指の離し)を検出するためにビューにUITapGestureRecognizerを追加しました。 。これは正常に動作します。タップしている間にUIViewの外観を変更します(しかしまだリリースされていません)

しかし、(UIButtonの動作と同様に)ビュー上で指が押されている間に、UIViewの外観を変更したい(少し暗くしたい)。

どうすればよいですか?

+2

UIButtonのサブクラス化はオプションではありませんか? – johnluttig

答えて

2

外観を-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)eventに変更してください。

+1

明確にするために、タップジェスチャ認識装置は、指を離すと起動します。そのため、この目的では動作しません。指が下がったときと終わったときを知るには、下位レベルの 'touches::withEvent:'メソッドを実装する必要があります。 – Costique

+0

@Costiqueと@fannheyward:ありがとう、これらのメソッドは素晴らしい動作します。しかし、ただ一つのことを確認するだけです:画面上をすばやくタップすると(つまり、画面に非常に短く触れるなど)、 'touchesEnded:'は 'touchesBegan:'の後に非常に素早く送信されます。より暗い「下」の色を表示する。私はこの問題を回避するために、2つのメソッド呼び出しの間の時間を測定しました。時間が十分に短い(1秒未満)場合、私は 'performSelector:withObject:afterDelay:'を使って通常の色への戻りを遅らせる。これは正常に動作します。しかし、これが最善のアプローチですか? – Enchilada

+1

@Enchilada私はそれがOKだと思います。遅延は、アニメーションの持続時間と同じくらい短くすることができます。 – Costique