指の静止したuibutton long press
質問
私のプロジェクトでは、ロングプレスを使用してイベントを処理するために、uibutton(または別のコンポーネント)を使用する必要があります。説明させてください、私はその心を作る必要があります私はボタンを押し下げて数秒を数え、圧力を止めてリリースします、私はuilongpressgestureculdurerecognizerの管理で試しましたが、ボタンが押されたときのイベントを思い出すのでそうではありませんが、そうではありません指を動かしますが、タイマーが消えて、ボタンが押されて(指が静止して)常にカウントされ、指が解放されたときにカウントを停止することを望みます。
誰かが私を助ける方法を知っていますか?ありがとう
解決
ボタンイベントにこれら2つの方法を使用します。 touchDown
ボタンを押すと呼び出されます touchUp
ボタンから指を持ち上げると呼び出されます。これら2つの方法の時差を計算します。また、タイマーを開始できます touchDown
停止/再起動します touchUp
.
//connect this action with Touch up inside
- (IBAction)touchUp:(id)sender {
NSLog(@"up");
}
//connect this to tocuh down
- (IBAction)touchDown:(id)sender{
NSLog(@"down");
}
更新しましたコーディングでは、このように書くことができます
[btn addTarget:self action:@selector(touchUp:) forControlEvents:UIControlEventTouchUpInside];
[btn addTarget:self action:@selector(touchDown:) forControlEvents:UIControlEventTouchDown];
そしてXibで
他のヒント
私がやったのと同じ...あなたがuilongpressgesturecognizerについて言ったように、私はそれを理解することができません..しかしあなたはあなたのコードを内部に書くことができます-(void)handleLongPress:(UILongPressGestureRecognizer *)gestureRecognizer
{
}
. 。私はこの方法を使用して同じことをしました、そして成功した結果を得ました.. :)。タイマーを追加する必要さえありません、代わりにあなたは使用できます...
UILongPressGestureRecognizer *lpgr = [[UILongPressGestureRecognizer alloc]
initWithTarget:self action:@selector(handleLongPress:)];
lpgr.minimumPressDuration = 1.0;
lpgr.delegate = self;
これは完璧に機能すると思います。