2

ビューコントローラーのサブクラスがあります。ジェスチャ認識エンジンを接続して、行の下のタップをトラップしようとしています。

これを行うには、一番下に空の行があるので、ユーザーはいつでもスクロールできるので、画面に空のセルが表示されます。この列のタップを簡単にトラップできます。

しかし、iOS 7 のリマインダーは、その下でもタップをサポートします。テーブルにあと 3 行分のスペースがあれば、最初の行だけでなく、それらの 3 つの行のいずれかをタップできます。

たとえば、赤い領域をタップできます。

ここに画像の説明を入力

iOS 6 でこれを行うために、テーブルにバックグラウンド ビューを追加し、ジェスチャ レコグナイザーをフックしました。

UIView *backgroundView = [[UIView alloc] init];
[backgroundView addGestureRecognizer:_tapOutsideGesture];
backgroundView.backgroundColor = [UIColor clearColor];
self.tableView.backgroundView = backgroundView;

これは 6.1 では機能しますが、7.0 では機能しません。私は何が欠けていますか?

Xcode 5.0 と 7.0 SDK を使用してビルドしていIPHONEOS_DEPLOYMENT_TARGET = 6.1ます。

4

2 に答える 2

2

テーブル ビューにジェスチャ レコグナイザーを追加する

UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doSomething:)];
tapGesture.delegate = self;
[self.tableView addGestureRecognizer:tapGesture];

タップがセル上にあるかどうかを確認します。

#pragma mark – UIGestureRecognizerDelegate

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {

   return ![self.tableView indexPathForRowAtPoint:[touch locationInView:self.tableView]];
}
于 2014-06-13T11:11:58.613 に答える