1

テーブルビューがあり、テーブルビューセルで UILongPressGestureRecognizer を使用して、セルにコンテキストメニューを表示し、ユーザーが追加機能を実行できるようにします。iOS 5.1 ではすべて正常に動作しますが、iOS 5 および 4.3 でテストすると、イベントが発生しません。

この問題を解決する方法を知っている人はいますか?助けてください、事前に感謝します。

以下は私のコードです:

tableViewCell.h: UIGestureRecognizerDelegate を追加

tableViewCell.m で

UILongPressGestureRecognizer *longPressRecognizer = [[UILongPressGestureRecognizer alloc] 
                                                     initWithTarget:self action:@selector(handleLongPress:)];
longPressRecognizer.minimumPressDuration = 1.5;
longPressRecognizer.numberOfTouchesRequired = 1;
longPressRecognizer.numberOfTapsRequired = 0;
longPressRecognizer.delegate = self;

[self addGestureRecognizer:longPressRecognizer];
[longPressRecognizer release];

// イベントを処理するメソッド

- (void)handleLongPress:(UILongPressGestureRecognizer *)gestureRecognizer
{    
    if (gestureRecognizer.state == UIGestureRecognizerStateBegan) 
    {
        // Do something.
    }
}
4

2 に答える 2

2

この問題に 1.5 日を費やした後、tableView は長押しイベントを受け取りますが、tableViewCell は iOS 5/4.3 では受け取りません。そこで、UILongPressGuestureRecognizer を tableView に追加し、長押しイベント ハンドラで tableViewCell を呼び出してコンテキスト メニューを表示することで、この問題を修正しました。

于 2012-08-18T07:51:57.190 に答える
1

私もこの問題に遭遇しました。「delegate」プロパティが「NULL」の場合にのみ、長押しジェスチャ認識エンジンが正常に機能することがわかりました。したがって、この行を削除してみてください。

longPressRecognizer.delegate = self;
于 2013-03-08T05:23:04.893 に答える