2013-05-29 1 views
2

Просто я хочу добавить жест выделения для UIImageView, который, когда пользователь прикасается, вызывает метод, который реализован в другом классе (не тот же класс, который содержит UIImageView) ,Добавление жестов, который вызывает метод в другом классе

Могу ли я это сделать, и если да, то как я могу это сделать?

+0

'NSNotification' может быть одним из способов, другим способом может быть делегирование. Используйте то, что вам подходит. – Amar

+0

Используйте метод touchBegan и напишите свой код для вызова функции где угодно. –

ответ

1

Вы можете это сделать. Но вам нужно экземпляр целевого класса (класс, в котором метод собирается выполнить) в качестве делегата или что-то в жесте добавления класса.

UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc]initWithTarget:self.delegate action:@selector(doSomething)]; 

Здесь делегат будет экземпляром целевого класса, который вы должны установить перед тем, как перейти к этому классу.

Редактировать

Я объясню немного больше. Предположим, у вас есть два класса контроллера VCA и VCB. вы хотите вызвать метод в VCA из VCB с помощью жестов tap.

в VCB.h

@property (nonatomic,assign)VCA *delegate; 

в VCB.m

UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc]initWithTarget:self.delegate action:@selector(doSomething)]; 

в VCA.m

Вы представите/толчок VCB

VCB * viewController = [[VCB alloc]init]; 
viewController.delegate = self; 
// push or present viewController 
+0

, пожалуйста, не могли бы вы заявить больше?! –

+0

См. Мое редактирование .... –

0

Declare селектор распознаватель на INIT

UITapGestureRecognizer *recognizer = 
[UITapGestureRecognizer 
    initWithTarget:objectOfAnotherClass 
    action:@selector(methodImplementedOnObjectOfAnotherClass:)]; 

Link to article about selector.

0

Один простой подход вызова метода другого класса из метода селекторном tapGesture т.

Добавить UITapGestureRecogniser в ImageView

UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapRecognised)]; 
[imageView addGestureRecognizer:tapGesture]; 

Dont забудьте включить userInteraction в UIImageView, так как по умолчанию для ImageView userInteraction отключен.

вы можете сделать это, как показано ниже.

imageView.userInteractionEnabled = YES; 

Затем в селекторе tapGestureRecogniser вызова метода другого класса

- (void)tapRecognised 
{ 
    [next tappedOnImage]; 
} 

Здесь next является объектом другого класса. Вы также можете использовать делегацию для вызова метода.

Надеюсь, это вам поможет.

0

здесь self.desired взгляд вид, в котором вы хотите добавить жест, и вы должны добавить жест следующим образом

и «webViewTapped.delegate = Я» означает, что вы хотите, чтобы вызвать функцию того же класса когда пользователь нажимает, и вы можете изменить его на желаемую функцию, используя делегат, такой как self.delegate

UITapGestureRecognizer *viewTapped = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAction:)]; 
     webViewTapped.numberOfTapsRequired = 1; 
     webViewTapped.delegate = self; 
     [self.desiredView addGestureRecognizer:viewTapped]; 



- (void)tapAction:(UITapGestureRecognizer *)sender; 
{ 
// do your stuff here 
}