2012-10-08 1 views
1

나는 touchedBegan 및 touchedEnded를 가지고 놀고 자 노력해 왔습니다. 나는 기본적으로 내 생각에 이미지를 만들려고 노력하고 있습니다. 그런 다음 사용자가 이미지를 터치하면 무엇인가 할 수 있습니다. 이미지를 터치하면 if 문 내에서 코드가 실행됩니다. 내가 뭘 잘못하고 있는지에 대한 어떤 생각?UumageView로 touchesEnded를 사용하는 데 문제가 있습니다.

가있는 viewDidLoad :

UIImage *image = [UIImage imageNamed:@"myimage1.png"]; 
imageView = [[UIImageView alloc] initWithImage:image]; 
imageView.frame = CGRectMake(0, 0, 320, 200); 
[self.view addSubview:imageView]; 
imageViewsArray = [NSArray arrayWithObjects:imageView, nil]; 

touchesEnded : 당신이 당신의 이미지 뷰 탭에 대한 알림을 받으려면

if ([[touch view] isKindOfClass:[UIImageView class]]) { 
     NSLog(@"Got Touch 2!"); 
} 
+1

내 게시물 확인; 내가 UR 문제 UUmageView의 속성을 userInteractionEnabled 예를 설정하지 않았다 생각합니다 – tiguero

답변

1

DrummerB처럼 나는 UITapGestureRecognizer을 사용하는 것이 좋습니다. 공식 문서 인 here을 살펴보고 작동 방식을 잘 이해해야하지만 중요한 것은 탭을 처리 할보기에 제스처 인식기를 연결하는 것입니다. 귀하의 경우에는 UIImageView을 다루고 있으므로 userInteractionEnabledUIImageView에 대해 기본값으로 NO으로 설정되어 있습니다. 즉, imageView는 기본적으로 이벤트를 선택하지 않습니다.

+0

굉장, 고마워. 이 단계를 더 진행하여 UIScrollview 및 UIView를 만들고 UIImageView를 던지려면 UIScrollview에 UIView를 던져야합니다. 내 코드가 그걸 선택하겠습니까, 아니면 하위 분류를해야할까요? – ios85

+0

내 자신을 발견, 당신은 서브 클래스해야합니다. UIScrollView는 내 ViewController의 메서드를 호출하지 않기 때문에 UIScrollView는 해당 메서드를 재정의합니다. 그래서 UIScrollView를 서브 클래스 화하고 그 메소드를 오버라이드해야했습니다. 당신의 도움을 주셔서 감사합니다! – ios85

+0

그냥 ur 메시지를 보았다 - 미안해! – tiguero

1

:

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 

    UITouch *touch = [touches anyObject]; 

    // do this on touch 
    UIView *touchedView = [touch view]; 
    if ([imageViewsArray indexOfObject:touchedView] != NSNotFound) { 
     // not not found means found! 
     NSLog(@"Got Touch!"); 
    } 
} 

나는이 if 문을 사용하여 시도 UITapGestureRecognizer을 사용하는 간단한 방법을 사용하는 것이 좋습니다.

- (void)handleTap:(UITapGestureRecognizer *)gr { 
    NSLog(@"Touched!"); 
} 

당신이 touchesEnded 스틱 다음 단계를 시도 할 경우

// After initializing and adding your UIImageView: 
UITapGestureRecognizer *gr = [[UITapGestureRecognizer alloc] initWithTarget:self  
           action:@selector(handleTap:)]; 
[imageView addGestureRecognizer:gr]; 
:

  • 확인하여 imageViews 배열 touchesEndednil없는 경우.
  • 로그 [touch view]을 터치하면 어떤보기가 터치를 수신하는지 확인할 수 있습니다.
+0

고마워요! 내 UIView가 터치를 캡처하는 것처럼 보이지만 UIImageView를 건드리고 UIView의 하위보기로 추가되는 경우 어떻게해야할까요? – ios85

+0

'touchesEnded'가 전혀 호출되지 않았습니까? 이미지를 만질 때 호출됩니까? – DrummerB

관련 문제