2014-11-25 13 views
0

Мне было интересно, возможно ли это. Чтобы иметь класс, который добавляет новые изображения в основное представление и назначает ему распознаватель жестов.распознаватель жеста в разных классах?

Так, на мой взгляд строитель класса, у меня есть следующие:

UIImageView *headerPlusIcon = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"plusIcon.png"]]; 
headerPlusIcon.frame = CGRectMake(header.frame.size.width - 2.5*(logoSize - 8), yPosition*1.6, logoSize*0.9, logoSize*0.9); 
headerPlusIcon.userInteractionEnabled = YES; 

UIGestureRecognizer *headerTapGesture = [[UIGestureRecognizer alloc] initWithTarget:mainView action:@selector(testTapGesture:)]; 
[headerPlusIcon addGestureRecognizer:headerTapGesture]; 

Водопроводная метод жест выглядит следующим образом:

-(void)testTapGesture:(UITapGestureRecognizer *)gesture 
{ 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     mainView.backgroundColor = [UIColor redColor]; 
    }); 
} 

MainView передается в этот класс через конструктор и просто основной вид.

Это называется так:

mainViewbuilder = [[MainViewBuilder alloc] initWithBaseView:self.view]; 
[mainViewbuilder buildHeader]; 

К сожалению, метод водопроводная жест никогда не вызывается ... как бы это сделать правильно? Спасибо!

+0

Выглядит совершенно нормально для меня. Вы наблюдаете какие-либо проблемы с этим подходом? – Drux

+0

Метод жестового нажатия не вызван. Когда я нажимаю на значок, ничего не происходит. Если я переведу код на главный контроллер, он работает как ожидалось – Nikeah

+0

Я предлагаю вам просто использовать uibutton с установленным изображением –

ответ

1

Попробуйте UITapGestureRecognizer

Apple Docs on UITapGestureRecognizer

+0

Благодарим вас за это предложение! Я должен признать, что я был настроен скептически, но, похоже, сделал трюк :) должен был изменить цель на себя, и она отлично работала – Nikeah

1

код вы вывесили никогда не добавляет свой headerPlusIcon в иерархии представлений. Вы говорите в своем ответе Адаму, что вы его работаете, но я не вижу, как если бы вы не добавляли headerPlusIcon в иерархию представлений содержимого вашего контроллера представления.

Обратите внимание, что сглаживание в иерархии представлений диспетчера представления со стороны не является хорошим объектно-ориентированным дизайном.

Было бы лучше, если бы контроллер вида запросил другой объект для представления (возможно, через протокол), а затем добавит это представление.

+0

Привет, я не показывал весь метод. Он добавляет изображение в основное представление как подвью. Но точка, в которой контроллер добавляет объект в представление, выглядит более идеальным. Подумайте об этом, спасибо! – Nikeah

Смежные вопросы