私のアプリではボタンを使用し、2 つのメソッドをそれらに割り当てます。簡単に言えば、ビューを開きたい場合はボタンを押しますが、ボタンに触れると画像が変更され、指を上げると別のビューが開きます。私の問題は、ボタンを押すと画像が変更されることですが、指をボタンから離れた場所に移動すると、内部のタッチアップが想定どおりに機能しません。しかし、問題は、タッチダウンが 1 回トリガーされるため、画像がオーバー バージョンに固執することです。私は何をすべきか?ありがとう
3 に答える
これは、コントロールの状態で処理することも、touchDragOutside
実行touchDragExit
したい内容に応じて処理することもできます。を使用touchDragOutside
すると、ユーザーがボタンの内側にタッチダウンし、ボタンのタッチ可能な境界を離れずに指をドラッグしたことを検出し、ボタンのタッチ可能な境界のtouchDragExit
外にドラッグしたことを検出できます。
[button addTarget:self action:@selector(someMethod:) forControlEvents:UIControlEventTouchDragExit];
[button addTarget:self action:@selector(someMethod:) forControlEvents:UIControlEventTouchDragOutside];
UIButtonオブジェクトのこのメソッドを使用して画像を変更することをお勧めします。
- (void)setImage:(UIImage *)image forState:(UIControlState)state
状態のすべてのオプションは、ここhttp://developer.apple.com/library/ios/#documentation/uikit/reference/UIButton_Class/UIButton/UIButton.htmlで確認できます。
ターゲットには、状態UIControlStateNormalとUIControlStateHighlightedを使用します。
私は自分自身でこの問題に直面しており、主にこれらのイベントを使用しています:-
// このイベントは正常に動作し、発生します
[button addTarget:self action:@selector(holdDown) forControlEvents:UIControlEventTouchDown];
// これはまったく発火しません
[button addTarget:self action:@selector(holdRelease) forControlEvents:UIControlEventTouchUpInside];
解決:-
長押しジェスチャー認識機能を使用する:-
UILongPressGestureRecognizer *btn_LongPress_gesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleBtnLongPressgesture:)];
[button addGestureRecognizer:btn_LongPress_gesture];
ジェスチャーの実装:-
- (void)handleBtnLongPressgesture:(UILongPressGestureRecognizer *)recognizer{
//as you hold the button this would fire
if (recognizer.state == UIGestureRecognizerStateBegan) {
[self someMethod];
}
//as you release the button this would fire
if (recognizer.state == UIGestureRecognizerStateEnded) {
[self someMethod];
}
}