基本的なタイプの画像ギャラリー (iPhone の写真アプリに非常に似ています) を実装し、押すと戻るボタンがあります。まあ、それは機能しますが、ごくわずかな場合に限られます。画像ギャラリーは基本的に、UIScrollView のレイヤーと UIImageView の上にある UIPageControl です。ページ間 (つまり、画像間) を通過できます。ただし、ボタンは最初のページにのみ表示され、アクセスできます。ジェスチャー (この場合はタップ) を使用してボタンを表示します。このボタンは 1 ページ目から移動しない場合にのみ機能します. 2 ページ目に移動してから最初に戻ると, 画面をタップしてボタンを表示するとアプリがクラッシュします. 少し複雑な説明です.それ。ボタンを表示するために使用するコードは次のとおりです。
//.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");
}
}
コードを void アクションに更新したところ、問題の詳細がわかりました。古いコードでは、ボタンは画像ギャラリーの最初のページにしか表示されませんでした。画像ギャラリーのすべてのページに表示できるようになりました。いつクラッシュするかがわかるようになりました。画面をタップしてボタンを表示し、もう一度タップして非表示にすると、何度でも機能します。しかし、それを行った後、別のページに移動したい場合は、クラッシュします。この情報により、問題がより早く解決されることを願っています。
crash log: Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '(null)' * First throw call stack: (0x19b6012 0x1448e7e 0x19b5e78 0xedef35 0xff93a2 0x3d5c4f 0x3e7748 0x3e7c9d 0x3ee5ec 0x3f20e7 0x65a89a 0x6599db 0x65b11f 0x65dd6d 0x65dcec 0x655a68 0x3c2fc2 0x3c34a3 0x3a13aa 0x392cf8 0x1800df9 0x1800ad0 0x192bbf5 libc++abi.dylib: 例外をスローして呼び出された終了 (lldb)
(クラッシュログの投稿が遅くなってすみません)
正確に何が起こっているのか、このクラッシュの理由はわかりません。画像間のスワイプを認識するジェスチャがこのクラッシュを引き起こしている可能性があります (1 回のタップのジェスチャと組み合わせて)。高度なヘルプをありがとう!