2011-04-19 13 views
3

私は、ユーザーがスクロールすることができる画像(より大きなiphoneの画面)を表示したいと思います。 がdifficoultないですが、私はこのコードでやった: を私の.hファイルUIImageView(UIScrollView上)のUIButton

@interface mappa1 : UIViewController <UIScrollViewDelegate> { 
IBOutlet UIImageView *img; 
IBOutlet UIScrollView *scroller; 
} 

で私の.mファイルに

UIImage *image = [UIImage imageNamed:@"prova.jpg"]; 
img = [[UIImageView alloc] initWithImage:image]; 
scroller.delegate = self; 
scroller.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth; 
scroller.contentSize = img.frame.size; 
scroller.scrollEnabled = YES; 
scroller.directionalLockEnabled = NO; 
scroller.userInteractionEnabled = YES; 
CGSize ivsize = img.frame.size; 
CGSize ssize = scroller.frame.size; 

float scalex = ssize.width/ivsize.width; 
float scaley = ssize.height/ivsize.height; 
scroller.maximumZoomScale = 1.0; 
scroller.minimumZoomScale = fmin(1.0, fmax(scalex, scaley)); 
scroller.zoomScale = fmin(1.0, fmax(scalex, scaley)); 
[scroller addSubview:img]; 

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView { 

return img; 

}

とすべて正常に機能します。

今私はUIViewではなく、ユーザーがズームまたは画像を移動する場合、uibuttonはuiimageの動き/ズームに従いたいので、UIImageにUIButtonを追加したいです。

だから私はこのコードを追加します

UIButton *btn = [[UIButton buttonWithType:UIButtonTypeRoundedRect] retain]; 
btn.frame = CGRectMake(0, 0, 100, 25); 
[btn setTitle:@"Play" forState:UIControlStateNormal]; 
[btn addTarget:self action:@selector(buttonClick) forControlEvents:UIControlEventTouchUpInside]; 
[img addSubview:btn]; 

をしかしUIButtonは "-クリックできない" です! もちろん、UIViewとUIImageViewにはUserInteractionEnabledがYESに設定されています!

ありがとうございます!

編集:私は

[scroller addSubView:btn]; 

を書く場合、ユーザのズーム/アウトは、UIButtonは常にビッグ100x25であれば、それは、もちろん、しかし、動作します。

+0

scrollViews「キャンセル可能コンテンツタッチ」のプロパティがあります。 IBの属性インスペクタで見つけることができます。そのオプションをオフにしてから、試してみてください。 –

+0

ありがとうございます、それは動作しません!また、「cancelabla content touches」のチェックを外すと、ズームが機能しません。 – JAA

+0

UIImageのズームレベルに応じてボタンのサイズを手動で変更する必要があるかもしれません。誰かが画像をズームするたびに、ボタンのサイズを調整します。 – Cyprian

答えて

2

あなたに役に立つかもしれません! 理由はわかりませんが、Interface BuilderのUserInteractionEnabled(UIImageView上)をチェックしても動作しません。 私が書く場合

img.UserInteractionEnabled = YES; 

それは動作します!

0

私はこれを試してみましたが、それは私の作品.......

UIImageView * imageView = [[UIImageView alloc]init]; 
[imageView setImage:[UIImage imageNamed:@"image.jpeg"]]; 
[imageView setFrame:CGRectMake(10,10,300,300)]; 
[imageView setContentMode:UIViewContentModeScaleToFill]; 
[imageView setUserInteractionEnabled:TRUE]; 

UIButton * ButtonOnImageView = [[UIButton alloc]init]; 
[ButtonOnImageView setFrame:CGRectMake(135,120,60,30)]; 
[ButtonOnImageView setImage:[UIImage imageNamed:@"image.jpeg"] forState:UIControlStateHighlighted]; 
[ButtonOnImageView setImage:[UIImage imageNamed:@"image2.jpeg"] forState:UIControlStateNormal]; 
[ ButtonOnImageView addTarget:self action:@selector(OnClickOfTheButton) forControlEvents:UIControlEventTouchUpInside]; 

[imageView addSubview:ButtonOnImageView]; 
[self.view addSubview:imageView]; 
関連する問題