2016-10-15 5 views
0

내가 버튼을 UIView의 프로그래밍을 만든이touchesBegan이 iOS의 UIView에서 작동하지 않습니까?

self.paintView=[[UIView alloc]initWithFrame:CGRectMake(0, 0,self.view.frame.size.width,self.view.frame.size.height+100)]; 
[self.paintView setBackgroundColor:[UIColor colorWithRed:0 green:0 blue:0 alpha:0.5]]; 
[self.navigationController.view addSubview:self.paintView]; 

처럼 클릭하고 navigationController에 그래서 난 전체 화면에서 내 UIView의를 볼 수 있다고 덧붙였다.

하지만 난 터치를 감지하려 할 때의이 방법은 모든 이제 감지하지

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    UITouch *touch = [touches anyObject]; 
    if (touch.view==self.paintView && self.paintView) { 
     [UIView animateWithDuration:0.9 animations:^{ 
      [self.sideView setFrame:CGRectMake(-290, 0, self.sideView.frame.size.width, self.sideView.frame.size.height)]; 
    }]; 
    } 

} 

작동하지 않습니다.

+0

코드로 만든 새로운보기로 상위보기를 차단하고 있기 때문에 touches 메서드는 부모보기에 속하지만 하위보기 때문에 감지 할 수 없습니다. – Dasem

답변

0

'userInteractionEnabled'가보기의 모든 수퍼 뷰에서 사용 설정되지 않은 경우 발생할 수 있습니다. 수퍼 뷰 중 하나라도이 속성을 false로 설정하면 터치 이벤트는 해당 하위 뷰 또는 하위 뷰에 대해 처리되지 않습니다. 문제가 될 수 있는지 확인하십시오.

0

그리고 당신이 포인트를 얻을 내 하나와 UIView UserInteractionEnable = YES

교체하여 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { } 코드를 제공합니다.

CGPoint point = [touch locationInView:touch.view]; 
CGPoint pointOnScreen = [touch.view convertPoint:point toView:nil]; 
NSLog(@"Point - %f, %f", pointOnScreen.x, pointOnScreen.y); 
NSLog(@"Touch"); 
0

모든 수퍼 뷰에서 userInteractionEnabled를 사용하도록 설정합니다. 수퍼 뷰에서이 속성을 false로 설정하면 터치가 하위 뷰를 처리하지 않습니다.

또한 UITapGestureRecognizer를 사용할 수 있습니다.

1

당신은보기를 추가하고 확인하는 코드 아래에 시도 할 수

self.paintView=[[UIView alloc]initWithFrame:CGRectMake(0, 0,self.view.frame.size.width,self.view.frame.size.height+100)]; 

[self.paintView setBackgroundColor:[UIColor colorWithRed:0 green:0 blue:0 alpha:0.5]]; 


[self.window.rootViewController.view addSubview:self.paintView];//try this 

일반 UIViewController에 의해 생성 된 뷰는 창을 채우고 당신의 SubView 앞에 있습니다. 따라서 SubView은 접촉을받을 수 없습니다.

rootViewController.view 귀하의 창에서 단일 최상위보기이며, 그 아래에 하위보기를 추가하고 확인하십시오.