как передать touchesBegan из UIScrollView в UIViewController - PullRequest
1 голос
/ 17 сентября 2011

На самом деле я хочу перенести данные из одного представления в другое.У меня есть UIScrollView, который имеет изображения поверх него.Теперь я хочу перенести данные из этого представления в другое представление, поскольку всякий раз, когда я касаюсь этого представления изображения, я хочу выбрать положение и переместить местоположение в другое представление.UIScrollView не имеет навигационного контроллера и не может быть в состоянии выдвинуть его.

UIScrollView находится над классом UIViewController.Есть ли способ отправить UITouch из UIScrollView в класс UIViewController и позволить этому классу выдвинуть представление, или мне нужно обойти что-нибудь.* ImageScrollView.m

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *t = [touches anyObject];
CGPoint touchInScrollView = [t locationInView:imageView];
NSLog(@"x: %f", floor(touchInScrollView.x));
NSLog(@"Y : %f", floor(touchInScrollView.y));

    /****Cant be done since pushViewController is not allowed in UIScrollView.****/

DetailViewController *newView = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
[self.navigationController pushViewController:newView animated:YES];

}

1 Ответ

1 голос
/ 17 сентября 2011

Добавьте это свойство в ImageScrollView.h

@property (nonatomic, retain) IBOutlet UIViewController* parentVC;

Добавьте эту строку после @implementation в ImageScrollView.m

@synthesize parentVC;

Добавьте эту строку в ваш - (void) метод dealloc в ImageScrollView.m

[parentVC release];

Если вы создаете ImageScrollView программно, после создания в вашем контроллере вида:

imageScrollViewYouJustMade.parentVC = self;

Если вы создаете ImageScrollView в Интерфейсном Разработчике, подключите выход parentVC к Владельцу Файла.

Чтобы выдвинуть новый контроллер представления, в ImageScrollView.m

[self.parentVC.navigationController pushViewController:newView animated:YES];

Вот альтернатива,

Я не могу сказать наверняка, не зная больше о вашем приложении, но в целом, если бы у меня было представление с прокруткой, содержащее изображения, к которым я хотел прикоснуться, я бы использовал UIButton вместо UIImageView и сделал бы что-то вроде

btnImage = [UIImage imageNamed:@"image.png"];
[btn setImage:btnImage forState:UIControlStateNormal];

Если вы не создаете кнопки программным способом, вы также можете установить изображение в качестве фона, изменив для параметра «Тип» в инспекторе атрибутов значение «Пользовательский» и изменив атрибут «Фон» на нужное изображение.

Использование кнопки вместо просмотра изображения позволит вам подключить выход TouchDown кнопки к методу IBAction в контроллере основного вида, который может выглядеть следующим образом:

- (IBAction)smileyFaceButtonTapped:(UIButton*)sender;
...