2012-10-13 4 views
0

기본 유형의 이미지 갤러리 (iPhone의 사진 앱과 매우 유사)를 구현했으며 버튼을 누르면 무엇이 돌아 왔는지를 보여주는 버튼이 있습니다. 글쎄, 그것은 단지 몇 가지 경우에만 작동합니다. 이미지 갤러리는 기본적으로 UIScrollView 레이어와 UIImageView 맨 위에있는 UIPageControl입니다. 페이지 간을 이동할 수 있습니다 (이미지 사이). 그러나 버튼은 첫 페이지에서만 표시되고 액세스 할 수 있습니다. 제스처 (이 경우에는 탭)를 사용하여 단추를 표시합니다. 이 버튼은 첫 페이지를 벗어나지 않으면 잘 작동합니다. 두 번째 페이지로 이동 한 다음 첫 번째 페이지로 돌아 가면 앱이 충돌하는 버튼을 표시하기 위해 화면을 탭하면 약간 복잡합니다. 그. 버튼을 표시하는 데 사용하는 코드는 다음과 같습니다.표시/숨기기 버튼을 눌렀을 때 앱이 다운 됨

//.h 

@interface ImatgesNouViewController : UIViewController <UIScrollViewDelegate, UIGestureRecognizerDelegate> { 
UIScrollView *bgScorllView;   
UIView *bgView;       
UIImageView *picImageView;  
UIScrollView *picScrollView; 
UIImageView *preImageView; 
UIImageView *nextImageView; 
} 

//.m 
-(void)viewDidLoad{ 
[super viewDidLoad]; 
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTap:)]; 
tapGesture.numberOfTapsRequired = 1; 
[tapGesture setDelegate:self]; 
[self.view addGestureRecognizer:tapGesture]; 
} 

이미지 갤러리에 다른 작업을로드합니다.

-(void) didTap:(id) sender{ 


if (boto.hidden == YES){ 

    [picImageView addSubview:boto]; 



    boto.hidden = NO; 
    NSLog(@"apareix"); 
} else { 

    [picImageView addSubview:boto]; 


    boto.hidden = YES; 
    NSLog(@"desapareix"); 
} 

} 

나는 보이드 행동으로 코드를 업데이트하고, 지금은 문제의 자세한 내용이있다. 이전 코드를 사용하면 버튼이 이미지 갤러리의 첫 번째 페이지에만 표시되었습니다. 이제 이미지 갤러리의 모든 페이지에 표시 될 수 있습니다. 이제 언제 충돌이 발생했는지 알 수 있습니다. 버튼을 표시하고 다시 숨기기 위해 화면을 탭하면 원하는만큼 여러 번 작동합니다. 그러나 그 일을 한 후에 다른 페이지로 가고 싶다면 충돌이 일어납니다. 이 정보로 문제가 더 빨리 해결되기를 바랍니다.

충돌 로그 : 인해 캐치되지 않는 예외 'NSInternalInconsistencyException'응용 프로그램 종료, 이유는 : '(null)와' * 먼저 던져 호출 스택 : (0x19b6012 0x1448e7e 0x19b5e78 0xedef35 0xff93a2 0x3d5c4f 0x3e7748 0x3e7c9d 0x3ee5ec 0x3f20e7 0x65a89a 0x6599db 0x65b11f 0x65dd6d 0x65dcec 0x655a68 0x3c2fc2 0x3c34a3 0x3a13aa 0x392cf8 0x1800df9 0x1800ad0 0x192bbf5 0x192b962 0x195cbb6 0x195bf44 0x195be1b 0x17ff7e3 0x17ff668 0x39065c 0x1ee8c 0x2395을 0x1) 의 libC++ abi.dylib : 너무 늦게 충돌 로그를 게시 예외 (lldb)

(죄송 던지는라고 종료)

나는 정확히 무슨 일이 벌어지고 있는지,이 충돌의 이유는 모르겠다. 제스처가 이미지 사이를 스 와이프하여 인식하는 것이이 충돌을 일으킬 수 있습니다 (한 번의 탭 동작과 결합). 고급 도움말에 감사드립니다!

+4

충돌 로그 추가 – NeverBe

+0

bgView는 어떤 작업을해야합니까? – NeverBe

+0

적어도 충돌 로그와 _relevant_ 정보가 필요합니다. "NSLogs"또는 "(des) apareix"가 무엇을 의미하는지 아무도 염려하지 않습니다. – tamasgal

답변

0

내 질문에 대한 답변을 찾았습니다. 조금 생각한 후에 버튼 앞에 여러 객체가 있습니다. 그래서 맨 위에 버튼을 가져와야하지만 뷰에 하위 뷰를 추가하면 (다른 객체처럼) 더 쉽게 수행 할 수 있습니다. 이것으로, 버튼은 항상 맨 위에 머무르지 만, 탭 제스처와 void 명령으로, 숨김을 예에서 아니오로 변경합니다. 호는 저를 도와 모든 일에

- (void)viewDidLoad 
{ 
[super viewDidLoad];  
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTap:)]; 
tapGesture.numberOfTapsRequired = 1; 
[tapGesture setDelegate:self]; 
[self.view addGestureRecognizer:tapGesture]; 
[self.view addSubview:boto]; 
[boto setHidden:YES];  } 

-(void) didTap:(id) sender 
{ 
if (boto.hidden == YES){ 
      [self.view addSubview:boto]; 
    boto.hidden = NO; 
    NSLog(@"apareix"); 

} else { 
    [boto removeFromSuperview]; 
    boto.hidden = YES; 
    NSLog(@"desapareix"); 
    [self.view addSubview:boto]; 
} 
} 

감사합니다 모든 당신의 도움으로 나는 분명히 간단한 일이 있음을 작동하게 할 수있어, 다음은 코드입니다.

0

이 시도 ...

변경 조치 : @selector (didTap) 에 대한 조치 : @selector (didTap :

변경 - (무효) didTap { to - (void) didTap : (id) 보낸 사람 {

+0

아니, 그것도 충돌 ... 어쨌든 답변 주셔서 감사합니다 – joan2404

+0

@interface ... <... UIGestureRecognizerDelegate ...> "[self.view addGestureRecognizer : tapGesture];"이전에 "앞에"[tapGesture setDelegate : 본인];". – koki

+0

또한 충돌합니다. 감사합니다 – joan2404