2009-05-09 10 views
13

내 iPhone 프로젝트 중 하나에서 터치 및 드래그하여 이동할 수있는 세 가지보기가 있습니다. 그러나 두 손가락을 사용하여 동시에 두보기를 이동하지 못하게하고 싶습니다. 따라서 나는 어떤 성공도없이 UIView.exclusiveTouch를 실험하려고 시도했다. 속성 작품은, 내가보기 컨트롤러에 다음 코드와 함께 새로운 프로젝트를 생성하는 방법을UIView.exclusiveTouch가 작동하지 않는 이유는 무엇입니까?

이해하기 :

- (void)loadView { 

    self.view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)]; 
    UIButton* a = [UIButton buttonWithType:UIButtonTypeInfoDark]; 
    [a addTarget:self action:@selector(hej:) forControlEvents:UIControlEventTouchUpInside]; 
    a.center = CGPointMake(50, 50); 
    a.multipleTouchEnabled = YES; 

    UIButton* b = [UIButton buttonWithType:UIButtonTypeInfoDark]; 
    [b addTarget:self action:@selector(hej:) forControlEvents:UIControlEventTouchUpInside]; 
    b.center = CGPointMake(200, 50); 
    b.multipleTouchEnabled = YES; 

    a.exclusiveTouch = YES; 

    [self.view addSubview:a]; 
    [self.view addSubview:b]; 

} 

- (void)hej:(id)sender 
{ 
    NSLog(@"hej: %@", sender); 
} 

이를 실행하는 경우, HEJ : 하나를 누를 때, 다른 보낸 사람으로, 호출되는 버튼 중 하나가 exclusiveTouch를 YES로 설정 했음에도 불구하고. multipleTouchEnabled 행에 주석을 달았습니다. 아무 소용이 없습니다. 누군가 내가 여기에없는 것을 나에게 설명해 줄 수 있니?

감사합니다, The iPhone OS Programming Guide에서 엘리

답변

18

:

단일보기에 이벤트 전달을 제한 : 기본적으로

는, 뷰의 exclusiveTouch 속성은 NO로 설정됩니다. 속성을 YES로 설정하면 이 (가) 닿는 경우 터치를 추적하는 창에서 볼 수 있도록보기를 표시합니다. 창에있는 다른보기는 해당 접촉을 수신 할 수 없습니다. 그러나 보기가 "독점적 인 터치"로 표시된 경우 이 같은 창에서 다른보기와 연결되어있는 것을 볼 수 없습니다. 손가락 이 배타적 터치보기에 접촉하면 보기가 해당 창에서 손가락을 추적하는 유일한보기 인 경우에만 해당 터치가 전달됩니다. 손가락이 비 독점보기를 터치하면 독점 터치보기에서 다른 손가락 추적이없는 경우 해당 터치는 으로 전달됩니다.

독점적 인 touch 속성은보기 프레임 외부의 영향을받지 않는다고 명시합니다.

이전에는 이것을 처리하기 위해 메인 뷰를 사용하여 각 하위 뷰 트랙을 터치하는 대신 화면의 모든 터치를 추적했습니다. 가장 좋은 방법은하는 것입니다 :

@Bradlarson 내가 문서에 현재 링크로 영업 이익을 업데이트
if(CGRectContainsPoint(thesubviewIcareAbout.frame, theLocationOfTheTouch)){ 
    //the subview has been touched, do what you want 
} 
+0

, 당신은 RichardJ.RossIII @ –

+0

: 환영합니다 - 그래서 갔던 곳이다. 나는 그들이 다른 날에 이벤트 처리 문서를 어디에 두 었는지 찾고있었습니다. 감사. –

+0

당신의 해석이 의사의 말로 생각하지 않습니다. 의사에 따르면, @ eliego의 코드는 예상대로 작동해야한다고 생각합니다. 그렇지 않으면 UIKit 또는 doc 중 하나의 버그입니다. – an0

관련 문제