0

ビュー コントローラーの viewDidLoad メソッドで、UISwipeGestureRecognizer と UITapGestureRecognizer をビューに追加しています。

- (void)viewDidLoad {
        [super viewDidLoad];
        [self.view addGestureRecognizer:[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(cardSwipe:)]];
        [self.view addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(cardTap:)]];
    }
- (void)cardSwipe:(UISwipeGestureRecognizer *)sender {
    //get the card. set faceUp to false.
    CGPoint location =  [sender locationInView:sender.view];
    NSIndexPath *cellIndex = [self.cardCollectionView indexPathForItemAtPoint:location];
    if(cellIndex){
        UICollectionViewCell *cell = [self collectionView:self.cardCollectionView cellForItemAtIndexPath:cellIndex];
        if(cell && [cell isKindOfClass:[CardCollectionViewCell class]]){
            [[((CardCollectionViewCell *)cell) cardView] handleCardSwipe];
        }
    }
}
- (void)cardTap:(UITapGestureRecognizer *)sender {
    //get the card. set faceUp to false.
    CGPoint location =  [sender locationInView:sender.view];
    NSIndexPath *cellIndex = [self.cardCollectionView indexPathForItemAtPoint:location];
    if(cellIndex){
        UICollectionViewCell *cell = [self collectionView:self.cardCollectionView cellForItemAtIndexPath:cellIndex];
        if(cell && [cell isKindOfClass:[CardCollectionViewCell class]]){
            [[((CardCollectionViewCell *)cell) cardView] handleCardSwipe];
        }
    }
}

これが関連する場合: ビューには UICollectionView が含まれています。

タップとスワイプが認識されません。私が行方不明であることは明らかですか?ありがとう。

4

6 に答える 6

9

シミュレーターを再起動するとうまくいきました。

于 2015-02-17T06:57:34.270 に答える
3

ビューは、スクロール、ボタンのタップ、またはスワイプアクションなどのジェスチャに応答していないことが判明しました。と から生成されたフォルダーを削除し~/Library/Application Support/iPhone Simulator / 6.1/Applications~/Library/Developer/Xcode/DerivedDataシミュレーターの設定をリセットし ( iOS Simulator>からReset Contents and Settings)、xcode でクリーンアップを行い (Product > Clean)、アプリを再度実行しました。ジェスチャーが認識されるようになりました。上記のどれが問題を解決したのかわかりません...シミュレーターの内容と設定をリセットするだけで十分だった可能性があります。

于 2013-05-22T20:11:43.660 に答える
0

UICollectionView が他のジェスチャーをブロックしないように、このメソッドをビューコントローラーに追加します

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
    return true;
}
于 2013-05-22T07:47:28.160 に答える
-5

最初に UITapGestureRecognizer Delegate メソッドを .h に追加する必要があります

@interface ViewController : UIViewController<UIGestureRecognizerDelegate>

UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doubleTapImgView:)];
        doubleTap.numberOfTapsRequired = 2;
        doubleTap.delegate = self;

- (void)doubleTapImgView:(UITapGestureRecognizer *)gesture
{
   //Do What you want Here
}
于 2013-05-22T05:56:20.857 に答える