2013-01-10 2 views
0

J'ai obtenu le x et y par un ensemble UITapGestureRecognizer sur l'écran, après avoir obtenu l'emplacement où je trouve l'objet touché, donc je mets les conditions, mais ne fonctionne pas. Peut-être que j'ai mis les mauvaises conditions dans l'objectif C? Xcode ne donne pas d'erreur mais la fonction ne fonctionne pas.Opérateurs logiques et mauvais résultat dans l'objectif C

-(void)tappedMapOniPad:(int)x andy:(int)y{ 
     NSLog(@"the x is: %d", x); 
     //the x is: 302 
     NSLog(@"the y is: %d", y); 
     //the y is: 37 

     if((121<x<=181) && (8<y<=51)){ //the error is here 
      self.stand = 431; 
     }else if ((181<x<=257) && (8<y<=51)){ 
      self.stand=430; 
     }else if ((257<x<=330) && (8<y<=51)){ 
      self.stand = 429; 
     } 

     NSLog(@"The stand is %d", self.stand); 
     //The stand is 431 

    } 

Comment puis-je faire?

Répondre

4

Remplacer

if((121<x<=181) && (8<y<=51)) 

par

if((121 < x && x <= 181) && (8 < y && y <= 51)) 
+0

Vous pouvez même réorganiser parethesis cette façon: 'if ((121 Zaphod

+0

Oui, j'ai supposé que OP avait une certaine logique derrière le regroupement des deux premières conditions ensemble, donc il serait peut-être préférable de le garder ainsi. –

+0

Merci, maintenant ça marche. –

1

(121<x<=181) Le type d'expression n'est pas valide dans Obj-c.

Utilisation, (x>121 && x<=181)

Votre code complet sera comme:

if((x>121 && x<=181) && (y>8 && y<=51)){ //the error is here 
     self.stand = 431; 
    } 
    else if ((x>181 && x<=257) && (y>8 && y<=51)){ 
     self.stand=430; 
    } 
    else if ((x> 255 && x<=330) && (y>8 && y<=51)){ 
     self.stand = 429; 
    } 

Ou vous pouvez l'optimiser comme:

if(y>8 && y<=51){ 
    if (x> 257 && x<=330) { 
     self.stand = 429; 
    } 
    else if(x>181){ 
     self.stand=430; 
    } 
    else if(x>121){ 
     self.stand = 431; 
    } 
} 
5
121<x<=181 

supposons x: = 10 121<10<=181 ->false<=181 ->0<=181 -> true

vous devez le faire étape par étape.

((121 < x) && (x <=181)) 

supposons x: = 10 ((121 < 10) && (10 <=181)) ->false && true ->false

0

manquant &&

Essayez

if((121<x&&x <=181)&&(8<y&&y <=51)) 

Hope it helps

Questions connexes