2017-11-23 2 views
1

이 문제를 가진 다른 사람들을 찾고 있으며 비슷한 문제가있는 사람을 볼 수 없습니다.제스쳐가 인식되지 않음 (2 손가락 더블 탭) : Xcode 9.1

문제 : 새로운 xcode로 업그레이드되었으며 지금 iOS11을 지원합니다. (내 응용 프로그램은 필요하지 않지만 인터페이스 빌더 파일을 더 이상 지원하지 않는 애플에 의해 강제된다 - 응용 프로그램을 응용 프로그램 저장소에 업로드하려고 할 때 오류 메시지가 표시됨).

코드가 매우 단순한 것처럼 보입니다 (항상 그렇지는 않습니다!). 최소한의 예제를 만들고 첨부했습니다. 간단한 단일 페이지 앱입니다. 뷰를로드하고 일부 제스처를 인식합니다. 단일 탭 제스쳐가 작동합니다. 두 번 탭하지 않습니다. 더블 탭은 2 개의 단일 탭으로 인식됩니다 (아마도 합리적 일 수 있습니다). 단일 탭 캡처를 제거하고 2 손가락 2 탭 제스처의 핸들러를 트리거하려고했습니다. 인식되지 않습니다. 빈 nib 파일을 사용하는 ios5.x에서 모두 작업해야합니다.

- (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

#import <UIKit/UIKit.h> 

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

구현 ... : : 여기

은 AppDelegate에 파일입니다 코드는 너무 간단 보인다

@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 손가락을 두 번 두드리기 만하면 안됩니다!

답변

0

추가 테스트를 마친 후 시뮬레이터가 범인이라는 결론에 도달했습니다. 일반적으로 두 손가락을 시뮬레이트하려면 옵션 키를 누릅니다. 이전의 모든 시뮬레이터는 예상대로 작동했습니다. 이 시뮬레이터에서 첫 번째 탭 이후에 옵션 키를 누르고 있으면 "실행 취소"됩니다. 이전에는 옵션 키를 누른 상태에서 키패드를 두 번 누를 수있었습니다. Xcode 9.1에서는 작동하지 않습니다. 해결 방법 : (할/사용하기가 더 힘들어) 옵션 키와 키패드를 동시에 두 번 탭하려고 시도하는 것입니다. 할 일이 훨씬 더 어렵고 테스트하기에 매우 불편합니다. 사과 버그 보고서를 제기했으며이 정보로 업데이트합니다. 버그 번호 : # 35671917 (해당 웹 사이트에서 버그 (다른 사람들)을 볼 수있는 방법이 있습니까? 아니면 "쓰기 전용"으로 모든 문제 웹 사이트를 숨길 수 있습니까?)

추가 정보 : ios9.3.5를 사용하는 실제 장치에서 실행할 때 문제가 없음을 확인했습니다. 제스처는 모두 예상대로 인식되었습니다.

업데이트 : 우리가 그것을 알 수있는 방법이 없습니다 있지만

애플은 극비 데이터베이스는 세계가 자신의 문제를 제외하고 (찾아 볼 수없는, 때문에, (이 기존 버그의 중복 주장 보고서)하지만 레코드를 추가 할 수 있습니다.) 아마도 수정 사항이 작동하고 있거나 그렇지 않은 것일 수 있습니다. 이러한 유형의 정보를 누설하지 않습니다.

0

난 그냥이 코드를 테스트하고 다음 줄을 제거하는 경우 : 모두 내 말을 잘 작동하는 것 같다

self.twoFingerDoubleTap_yyz.numberOfTouchesRequired = 2; 

합니다.

+0

하지만 2 손가락 더블 탭이 필요했습니다. 나는 또한 당신이 말한 것을 시도했는데 이드는 나를 위해 일하지 않았다!? Huummm? 수정 - 단일 손가락 두 번 탭 작동했습니다. 그것은 작동하지 않는 2 손가락 버전입니다. – BitKick

+0

그것은 터치 수를 유지하면서 도청 수를 유지하면서 작동합니다. –

+0

또한 두 손가락 1 탭을 작동합니다. - 그걸 시도해 봤어. 그렇게하면 xcode가 이중 터치를 인식하지 못한다는 생각을하지 않게됩니다. – BitKick

0

도청과 접촉이 다릅니다. 탭은 탭의 수를 알려줍니다 (싱글, 더블 등). 터치는 탭 당 손가락 수를 알려줍니다. 각 탭 번호마다 두 개의 탭 제스 인식기가 필요합니다. uiview에 임의의 수의 인식기를 추가 할 수 있습니다.