質問

私のプロジェクトでは、ロングプレスを使用してイベントを処理するために、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で enter image description here

他のヒント

私がやったのと同じ...あなたがuilongpressgesturecognizerについて言ったように、私はそれを理解することができません..しかしあなたはあなたのコードを内部に書くことができます-(void)handleLongPress:(UILongPressGestureRecognizer *)gestureRecognizer { }. 。私はこの方法を使用して同じことをしました、そして成功した結果を得ました.. :)。タイマーを追加する必要さえありません、代わりにあなたは使用できます...

 UILongPressGestureRecognizer *lpgr = [[UILongPressGestureRecognizer alloc] 
                                      initWithTarget:self action:@selector(handleLongPress:)];
lpgr.minimumPressDuration = 1.0;
lpgr.delegate = self;

これは完璧に機能すると思います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top