1

タッチイベントをキャッチしています。2 つのイベントを区別する必要がある 1) ユーザーが画面に触れてから指を離した 2) ユーザーが画面に触れたが、指を離さなかった 2 つのイベントを区別するにはどうすればよいですか?

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
 if (isFirstCase)
 {}
 if (isSecondCase)
 {}
}
4

2 に答える 2

2

属性(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日を :)

于 2012-03-27T08:42:29.207 に答える
2

ジェスチャ レコグナイザーを使用できます。

まず、ジェスチャ レコグナイザーを登録する必要があります。

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
}
于 2012-03-27T08:26:18.217 に答える