2012-12-12 6 views
1

한 번 만진 썸네일 이미지 목록을 포함하는 응용 프로그램을 만들려고하면 썸네일보기 컨트롤러에서 선택한 이미지를 표시하는 하나의 큰 UIImageView가있는 새로운보기 컨트롤러가 만들어집니다. "SmallPicsViewController"에서는 아래 코드를 사용하지만 이미지를 선택할 때 아무 일도 일어나지 않습니다. 인스턴스화하려고하는 새로운 뷰 컨트롤러는 bigPics라는 UIIMageView에 대한 IBOutlet을 포함하는 "BigPicsViewController"라고합니다.UIImageView에서 UITapGestureRecognizer를 사용하여 UIViewController를 인스턴스화하십시오.

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

UITouch *touch = [touches anyObject]; 
if([[touch valueForKey:@"view"]isKindOfClass:[UIImageView class]]){ 

    UIImageView *viewSelected = (UIImageView *)[touch valueForKey:@"view"]; 

    BigPicsViewController *bigController = [[BigPicsViewController alloc]initWithNibName:@"BigPicsViewController" bundle:nil]; 

    bigController.bigPic = viewSelected; 

    } 
} 
+0

"아무 일도 없다"는 뜻은 무엇입니까? 위 코드가 나타나므로 새 뷰 컨트롤러에서는 아무 작업도 수행하지 않습니다. UINavigationController 스택에 푸시하거나 현재 뷰 컨트롤러에서 모달 뷰로 표시해야합니다 (앱 UI 흐름 설정 방법을 모르기 때문에 "어느 쪽인가"라고 말합니다). – gschandler

답변

0

세 가지 이유 : UIImageView 그것이 접촉을 등록하지 의미 기본적으로 NO에 userInteractionEnabled 세트를 가지고 있기 때문에

1) touchesBegan 방법이 가장 가능성이 전혀 호출되지 않습니다.

2)이 메서드는 호출되지만 UIImageViewuserInteractionEnabled이 NO로 설정되어 있기 때문에 이미지 뷰 아래에 뷰가 있으므로 if 문은 false입니다.

3) gschandler가 말했듯이 뷰 컨트롤러를 사용하여 뷰를 계층 구조에 표시하지 않는 것처럼 보이지는 않습니다.

어떤 것이 있는지 알아 내려면 중단 점이나 로그 문을 사용하십시오.

관련 문제