2016-05-29 6 views
0

Ich habe dieses seltsamste Verhalten mit Berührungsereignis gefunden. Die Targeting-Ansicht ist noch nicht einmal zugewiesen touchesEnded wird durch Tippen auf einen Teil des Bildschirms mit 2 Fingern nicht 1 aufgerufen, muss 2 sein ... dann überspringt touchesBegan, call touchesEnded. Ich habe sogar überprüft, ob die UserInteraction der Zielansicht auf YES gesetzt ist, aber nein, es ist offensichtlich auf NO gesetzt, weil es standardmäßig NEIN ist, aber es ist sowieso nicht zugewiesen.touchesEnded wird aufgerufen, wenn ein Teil des Bildschirms mit zwei Fingern gleichzeitig angetippt wird

All dies nicht der Fall, wenn die gezielte Ansicht bereits zugeordnet ist, und positioniert usw.

Hat jemand diese Erfahrung gemacht ?? Warum passiert das und muss ich die Eigenschaft zuweisen, um zu verhindern, dass die Berührungsereignisse zufällig wie verrückt aufgerufen werden? Auch warum würde dieses seltsame Verhalten 2 Finger zur gleichen Zeit anstelle von nur einem Tippen erfordern .... es ist nicht wichtig, aber ich bin nur sehr neugierig.

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

UITouch *touch = [[event allTouches] anyObject]; 

if (touch.view == self.buttonStartButton) { 

    NSInteger levelUp = [self.levelModel checkForLevelUp]; 
    if (levelUp == 0) { 
     [self byeGameContainer]; 
    } 
    else { 
     [self.delegate levelingUp]; 
    } 
}} 

Antwort

0

also versucht, das Ziel Aufteilung und Einstellung seines Rahmens aus der Grenzen des Bildschirms touchesBegan und touchesEnded STILL aufgerufen würde nicht funktionieren, wenn ein Teil des Bildschirms abgegriffen wird. Ich habe sogar seine userInteractionEnabled = NO gesetzt, aber Berührungsereignisse würden immer noch aufgerufen werden.

Ended dies tun und das funktioniert. Durch Überprüfen, ob die Zieleigenschaft zugewiesen ist oder nicht, werden Touch-Ereignisse schließlich nicht aufgerufen, wenn sie nicht sollten/sollten.

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

UITouch * touch = [[Ereignis allTouches] anyObject];

if (touch.view == self.buttonStartButton & & self.buttonStartButton! = Null) {

NSInteger levelUp = [self.levelModel checkForLevelUp]; 
if (levelUp == 0) { 
    [self byeGameContainer]; 
} 
else { 
    [self.delegate levelingUp]; 
} 

}}

Verwandte Themen