У меня есть UIViewController. И UIView внутри Как обнаружить прикосновения самостоятельно?

У меня есть UIViewController. И 3 UIView внутри Как обнаружить прикосновения самостоятельно.

У меня есть 3 класса, и добавил объекты в UIViewController

И есть этот метод в каждом классе, мне нужно коснуться объекта (UIView) отвечает на событие независимо

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{

}

пример:

  • view1 NSLog (@ "I Touched View 1");

    view2 NSLog (@ "I Touched View 2");

    view3 NSLog (@ "I Touched View 3");

Спасибо!!

1 ответ

Решение

Если все три представления являются потомками представления вашего viewController, вы можете использовать следующий фрагмент кода

for (UITouch *t in touches) {
    CGPoint p = [t locationInView:self.view];
    UIView *v = [self.view hitTest:p withEvent:event];
    NSLog(@"touched view %@", v);
}

РЕДАКТИРОВАТЬ

Хорошо, я предполагал, что у вас была только одна точка входа (в UIViewController) для сенсорного определения ваших подпредставлений; Если, как вы сказали, у вас есть класс для каждого подпредставления, вы уже решили свою проблему. Вам не нужно ничего делать, кроме как положить свой NSLog(@"touched..") код внутри каждого touchBegan:withEvent: метод.

Например

@implementation FirstSubview
.
.
-( void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    NSLog(@"I touched View 1");
}
.
.
@end

Примечание: так как UIViewController также UIResponder (т.е. наследуется от UIResponder) вы также можете использовать первое решение, которое я разместил.

Другие вопросы по тегам