2011-08-02 10 views
5

Mam 2 UIView.jak wykryć dotknięcie wydarzenia w podglądzie lub jak sprawić, aby widok nadrzędny został dotknięty, gdy dotkniemy podzespołu?

pierwsza jest rzutem rodzic

drugi jest podrzędny,

jaki sposób możemy wykryć, kiedy podrzędny został dotknięty?

lub chcę, aby widok nadrzędny został dotknięty, gdy użytkownik wyświetli podskok, czy może mi w tym pomóc każdy kod? czy to możliwe?

ponieważ mam funkcję Coś, która zadzwoni po dotknięciu jednego z nich.

Odpowiedz

5

Problem ten został rozwiązany. Myślę, że ktoś dał świetną odpowiedź, ale zapominam jak.

Oto, co zrobiłem. W XIB jest opcja. Jest pole wyboru (zatytułowane "User interaction enabled"), które określa, czy zdarzenie obsługi wywołania podglądu podrzędnego, czy nie.

Odznacz to pole wyboru, a wszystkie elementy dotyku do widoku podzadania przechodzą do widoku nadrzędnego lub dowolnego innego widoku za nim.

+1

A jaka jest nazwa tego pola wyboru? – MartinMoizard

+0

I nolonger kod na iPhone i zapomniałem. Myślę, że to główna różnica między UIControl i UIView. UIControl ma domyślnie włączone pola wyboru. –

0

To może pomóc:

UITouch *touch = [event.allTouches anyObject]; 
CGPoint touchPoint = [touch locationInView:YOUR VIEW NAME]; 
3

wykryć dotykowy zdarzenia trzeba dodać UITapGestureRecognizer w widoku sub lub Super View (w której chcesz dostać dotyk).

- (void)viewDidLoad 
{ 
    UITapGestureRecognizer* tap = [[UITapGestureRecognizer alloc] initWithTarget:self 
                    action:@selector(tap:)]; 
     tap.numberOfTapsRequired = 1; 

     [self addGestureRecognizer:tap]; 


    [super viewDidLoad]; 
} 

następnie można dodać metody delegat UITapGestureRecognizer

- (void) touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event 
{ 
    UITouch *touch = [touches anyObject]; 
    // here you can get your touch 
    NSLog(@"Touched view %@",[touch.view class]); 
} 

nadzieję, że to daje pomysł ..

6

Ten pracował dla mnie:

(Połącz podrzędny w xib lub ujęć)

ViewController.h

@interface ViewController : UIViewController 

@property (nonatomic, strong) IBOutlet UIView *subview; 
@property (nonatomic, strong) UITapGestureRecognizer *tapRecognizer; 

@end 

ViewController.m

@implementation ViewController 

@synthesize subview; 
@synthesize tapRecognizer; 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 

    tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self 
                  action:@selector(handleTap:)]; 

    [subview addGestureRecognizer:tapRecognizer]; 
} 

- (IBAction)handleTap:(UITapGestureRecognizer *)recognizer { 
    if (recognizer.state == UIGestureRecognizerStateEnded){ 
     //code here 
     NSLog(@"subview touched"); 
    } 
} 

@end 
+0

W funkcji handleTap dodałem następujący wiersz, aby ukryć klawiaturę. [self.view koniecEsekcji: TAK]; –