私のアプリには、ユーザーがアプリのすべてのページのサムネイルを含むメニューを開いてから、特定のページをタップできる機能があります。これは基本的に、各ページのサムネイル画像をUIScrollView
追加したです。UIButton
サムネイル メニューは、アプリの途中にあるページの 1 つで開くと、完全に機能します。ただし、サムネイルメニューを開いた後、スクロールビューのボタンの 90% がタッチされない場合が多くあります。これは通常、ユーザーが手動でアプリの最後に到達し、サムネイル メニューを開いたときに発生します。
コードは次のとおりです。
@interface BookmarkManager : UIView{
UIScrollView *thumbnailScrollView;
}
@property (strong) UIScrollView *thumbnailScrollView;
@implementation BookmarkManager
@synthesize thumbnailScrollView;
-(id)init{
self = [super initWithFrame:CGRectMake(0, 0, 1024, 768)];
if(self){
[self setBackgroundColor:[UIColor clearColor]];
thumbnailScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 1024, 120)];
[thumbnailScrollView setBackgroundColor:[UIColor clearColor]];
UIImageView *background = [[UIImageView alloc] initWithImage:[UIImage imageWithContentsOfFile:[NSString stringWithFormat:@"%@/thumbnail_background.png", [[NSBundle mainBundle] resourcePath] ]]];
[self addSubview:background];
for(int i = 0; i < totalPages; i++){
UIButton *pageThumbnail = [UIButton buttonWithType:UIButtonTypeCustom];
[pageThumbnail setFrame:CGRectMake(0, 0, 125, 95)];
[pageThumbnail setImage:[UIImage imageWithContentsOfFile:[NSString stringWithFormat:@"%@/p%d_thumb.png", [[NSBundle mainBundle] resourcePath], i]] forState:UIControlStateNormal];
pageThumbnail.titleLabel.text = [NSString stringWithFormat:@"%d",i];
pageThumbnail.center = CGPointMake(20 + (i * pageThumbnail.frame.size.width) + (i * 20) +(pageThumbnail.frame.size.width/2), 60);
[thumbnailScrollView addSubview:pageThumbnail];
[pageThumbnail addTarget:self action:@selector(thumbnailTapped:) forControlEvents:UIControlEventTouchDown];
}
[self addSubview:thumbnailScrollView];
[thumbnailScrollView setContentSize:CGSizeMake(totalPages * 125 + (20*(totalPages+1)), 120)];
}
return self;
}
-(void)thumbnailTapped:(id)sender{
UIButton *thumbnailButton = sender;
int pageNumber = [thumbnailButton.titleLabel.text intValue];
NSLog(@"tapped thumbnail for page: %d", pageNumber);
[bookmarkManagerDelegate jumpToPage:pageNumber];
}
に設定userInteractionEnabled = YES
してpageThumbnail
みましthumbnailScrollView bringSubviewToFront:pageThumbnail
たが、うまくいきませんでした... ボタンは常に完全に適切に表示されます。 . それはなぜでしょうか?
編集: を実装UIScrollView's
scrollViewDidEndDecelerating
しました。シミュレーターでは呼び出されますが、デバイスでは呼び出されません。ボタンの画像が大きすぎる可能性がありますか?