タッチイベントをキャッチしています。2 つのイベントを区別する必要がある 1) ユーザーが画面に触れてから指を離した 2) ユーザーが画面に触れたが、指を離さなかった 2 つのイベントを区別するにはどうすればよいですか?
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
if (isFirstCase)
{}
if (isSecondCase)
{}
}
属性(NSSet *)touches
にはUITouch
オブジェクトが含まれており、それぞれにいくつかの役立つプロパティが含まれています。
@property(nonatomic, readonly) NSUInteger tapCount
@property(nonatomic, readonly) NSTimeInterval timestamp
@property(nonatomic, readonly) UITouchPhase phase
@property(nonatomic,readonly,copy) NSArray *gestureRecognizers
typedef enum {
UITouchPhaseBegan,
UITouchPhaseMoved,
UITouchPhaseStationary,
UITouchPhaseEnded,
UITouchPhaseCancelled,
} UITouchPhase;
Phase と tapCount は、タッチの種類を識別するのに非常に便利なプロパティです。UIGestureRecognizers を使用できるかどうかを確認します。NSArray *gestureRecognizers
- この特定のタッチに関連するこのオブジェクトの配列。
良い1日を :)
ジェスチャ レコグナイザーを使用できます。
まず、ジェスチャ レコグナイザーを登録する必要があります。
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]
initWithTarget:self
action:@selector(handleTap:)];
[myView addGestureRecognizer:tap];
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc]
initWithTarget:self
action:@selector(handleLongPress:)];
longPress.minimumPressDuration = 1.0;
[myView addGestureRecognizer:longPress];
次に、アクション メソッドを記述する必要があります。
- (void)handleTap:(UITapGestureRecognizer *)gesture
{
// simple tap
}
- (void)handleLongPress:(UILongPressGestureRecognizer *)gesture
{
// long tap
}