0

ユーザーが画面から指を離さずに UIButton 内のタッチを検出する方法はありますか?

例: 2 つのボタンがあり、ユーザーが左のボタンをタップしてから右のボタンに指をドラッグした場合、アプリケーションは右のボタンをタップしていることを認識する必要があります。

4

2 に答える 2

2

これは、既存のボタン イベントを使用して実行できるはずです。たとえば、「タッチ ドラッグ アウトサイド」、「タッチ アップ アウトサイド」、「タッチ ドラッグ エグジット」などです。

これらのイベントに登録して、どのイベントがあなたのニーズに合っているかを確認してください。

于 2012-11-12T12:57:05.143 に答える
0

UIViewControllerを使用してこれを自分で実装します。

ボタンを使用する代わりに。

画面に2つのビュー(ボタンごとに1つ)を配置します。これらのボタン、imageViews、またはUIViewsのいずれかを作成できますが、必ずuserInteractionEnabled = NO;

次に、UIViewControllerでメソッドtouchesBeganとを使用しtouchesMovedます。

私はviewControllerにいくつかの状態を保存します...

BOOL trackTouch;
UIView *currentView;

次に、touchesBeganがビューの1つに含まれている場合...

-(void)touchesBegan... (can't remember the full name)
{
    UITouch *touch = [touches anyObject];
    CGPoint point = [touch locationInView:self.view];
    if (CGRectContainsPoint(firstView, point)) {
        trackTouch = YES
        //deal with the initial touch...
        currentView = firstView;  (work out which view you are in and store it)
    } else if (CGRectContainsPoint(secondView, point)) {
        trackTouch = YES
        //deal with the initial touch...
        currentView = secondView;  (work out which view you are in and store it)
    }
}

次にtouchesMovedで...

- (void)touchesMoved... (can't remember the full name)
{
    UITouch *touch = [touches anyObject];
    CGPoint point = [touch locationInView:self.view];
    if (CGRectContainsPoint(secondView, point) and currentView != secondView)) {
        // deal with the touch swapping into a new view.
        currentView = secondView;
    } else if (CGRectContainsPoint(firstView, point) and currentView != firstView)) {
        // deal with the touch swapping into a new view.
        currentView = firstView;
    }
}

とにかくこのようなもの。

于 2012-11-12T12:43:14.470 に答える