2017-11-23 14 views
1

この問題を抱えている他の人を探していて、同様の問題を抱えている人はいません。ジェスチャーが認識されません(2指ダブルタップ):Xcode 9.1

問題:新しいxcodeにアップグレードされ、現在ios11をサポートしています。 (私のアプリはそれを必要としませんが、インターフェースビルダーのファイルをサポートしていないAppleが強制します - アプリケーションをApp Storeにアップロードしようとするとエラーメッセージが表示されます)。

コードはかなりシンプルなようです(常にそうではありません!)。 サンプルを作成しました。 シンプルなシングルページアプリ。ビューを読み込み、いくつかのジェスチャーを認識します。 シングルタップジェスチャーが機能します。ダブルタップはありません。 ダブルタップは2つのシングルタップとして認識されます(おそらく合理的かもしれません)。 シングルタップ取得を取り除き、2フィンガー2タップジェスチャーのハンドラーをトリガーしようとしました。 認識されません。 両方とも空のnibファイルを使用してios5.xで作業していた。ここで

はappDelegateファイルです:

#import <UIKit/UIKit.h> 

@interface AppDelegate : UIResponder <UIApplicationDelegate> 
@property (strong, nonatomic) UIWindow *window; 
@end 

実装...

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    // Override point for customization after application launch. 
    self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds] ; 
    self.appViewController = [[myViewController alloc] initWithNibName:nil bundle:nil]; 
    self.window.rootViewController = self.appViewController; 
    //@property(nullable, nonatomic,strong) UIViewController *rootViewController NS_AVAILABLE_IOS(4_0); // from "UIWindow" 

    [self.window makeKeyAndVisible]; 
    self.window.backgroundColor = [UIColor redColor]; 



    return YES; 
} 

のViewController:

@interface ViewController() 
@property (retain,readwrite) UITapGestureRecognizer  *twoFingerDoubleTap_yyz; 
@property (retain,readwrite) UITapGestureRecognizer  *oneFinger; 

@end 

@implementation ViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 

    //add gesture Double tap to open a view. 

    self.twoFingerDoubleTap_yyz = [[UITapGestureRecognizer alloc]initWithTarget:(id)self action:@selector (twoFingerDoubleTap:) ]; 
    [self.view addGestureRecognizer:self.twoFingerDoubleTap_yyz]; 
    self.twoFingerDoubleTap_yyz.numberOfTapsRequired = 2; 
    self.twoFingerDoubleTap_yyz.numberOfTouchesRequired = 2; 

    /* 
    self.oneFinger = [[UITapGestureRecognizer alloc]initWithTarget:(id)self action:@selector (oneFingerTap:) ]; 
    [self.view addGestureRecognizer:self.oneFinger]; 
    self.oneFinger.numberOfTapsRequired = 1; 
    self.oneFinger.numberOfTouchesRequired = 1; 

*/ 
} 



-(IBAction)twoFingerDoubleTap:  (UITapGestureRecognizer *) sender 
{ 
    NSLog(@"i'm here 2 !"); 
} 

-(IBAction)oneFingerTap:  (UITapGestureRecognizer *) sender 
{ 
    NSLog(@"i'm here 1 !"); 
} 

- (void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 


@end 

コードは非常にシンプルなようで、私は非難したいと思いますXcodeの問題(新しい9.1ではダブルタップは認識されないかもしれません)またはios11で問題が発生します。しかし、私は問題を抱えている誰も見ていないので、私は何かが欠けていると思う必要があります。 (注:実際のデバイスでは試していません。現時点ではios7.x以上のものは何も持っていませんので、私の元のiPadにはアップグレードが必要です)!

アップデート:それはかなり関連しているので、コメントセクションからここに移動しました)2本指のシングルタップもテストで働いていました。 2本の指でダブルタップしないだけ!

答えて

0

さらなるテストの後、私はシミュレータが原因であると結論づけました。通常、2本の指をシミュレートするには、オプションキーを押し下げます。以前のシミュレータはすべて期待通りに機能しました。このシミュレータでは、最初のタップの後に、オプションキーを押したままにすると "元に戻す"となります。 これまで私はオプションキーを押し下げてキーパッドをダブルタップすることができました。 Xcode 9.1では動作しません。 対応策:(やりにくく/使用する)オプションキーとキーパッドを同時にダブルタップしてみてください。多くのことをするのは難しいので、テストにはかなり不便です。 私はアップルのバグレポートを提出しました。この情報でアップデートします。バグ番号:#35671917 (そのバグ(他の​​人々)をそのWebサイトで表示する方法はありますか、それとも「書き込み専用」なのですべての問題のWebサイトを非表示にしていますか?)

注:ios9.3.5を使用していた実際のデバイスで実行しても問題はないことも確認しました。ジェスチャーはすべて期待どおりに認識されました。

アップデート:私たちはそれを知る方法はありませんが、世界があなた自身の問題を除いて(参照することはできませんという極秘データベースであるため、

Appleは、(、これは既存のバグの重複であると主張報告書)がありますが、レコードを追加することができます)、おそらく修正が実際に行われているのかもしれないし、おそらくそうではないかもしれません。

0

私はこのコードをテストし、あなたが次の行を削除する場合:

self.twoFingerDoubleTap_yyz.numberOfTouchesRequired = 2; 

をすべての私の終わりを正常に動作するようです。

+0

しかし、私は2本指のダブルタップが欲しかった。私もあなたが言ったことを試して、私のために働いていなかった!ヒュームム?修正 - シングルフィンガーのダブルタップが機能しました。それは、しかし、動作していない2指のバージョンです。 – BitKick

+0

これはタッチの数を外に出すが、タップの数を保ちます。 –

+0

それはまた、2本の指1タップで動作します。 - それも試しました。それはダブルタッチを認識しないxcodeの私の考えを排除します。 – BitKick

0

タップとタッチが異なります。タップはタップ数を示します(シングル、ダブルなど)。タップは1タップあたりの指の数を示します。したがって、タップ番号ごとに2つのタップジェスチャ認識機能が必要です。 uiviewに任意の数の認識器を追加することができます

関連する問題