Кнопка UIB через UIImageView (через UIScrollView) - PullRequest
3 голосов
/ 19 апреля 2011

Я хочу показать изображение (больше экрана iphone), которое пользователь может прокручивать.Не сложно, я сделал с этим кодом: в моем .h файле

@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;

}

и все работает отлично!

Теперь я хочу добавить UIButton на UIImage, а не на UIView, потому что я хочу, чтобы, если пользователь увеличивает или перемещает изображение, uibuttonследуйте за движением / масштабированием uiimage.

Так что я добавляю этот код:

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.

Ответы [ 3 ]

2 голосов
/ 20 апреля 2011

РЕШИТЬ! Я не знаю почему, но если я проверил UserInteractionEnabled (на UIImageView) в Интерфейсном Разработчике, это не работает. Если я напишу

img.UserInteractionEnabled = YES;

это работает!

0 голосов
/ 02 ноября 2012

Я попробовал это, и это работает для меня .......

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];
0 голосов
/ 20 апреля 2011
...