Comment puis-je désactiver la touche décimale sur le keyboard iOS

Je veux désactiver le "." touche sur le pavé numérique après avoir détecté que l'user a déjà entré une décimale dans le champ de text.

La key est donc activée jusqu'à ce qu'une décimale soit détectée dans le champ de text.

Quelle est la meilleure façon de faire cela?

EDIT: J'ai implémenté la méthode ci-dessous:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementSsortingng:(NSSsortingng *)ssortingng { if([ssortingng isEqualToSsortingng:@"."]) { decimalCount++; } if(decimalCount > 1) { [ssortingng ssortingngByReplacingOccurrencesOfSsortingng:@"." withSsortingng:@""]; } return YES; } 

Cependant, il ne remplace pas "." avec "" lorsque le nombre décimal est supérieur à 1. Que manque-t-il pour que l'user puisse toujours entrer de nouveaux numbers mais pas des points décimaux?

Vous ne pouvez pas désactiver la key. Implémentez la shouldtextField:shouldChangeCharactersInRange:replacementSsortingng: delegate pour faire le filtrage dont vous avez besoin.

Cela doit être fait de toute façon, car un user peut utiliser un keyboard externe ou tenter de coller du text dans le champ de text.

Désolé si ma réponse précédente vous induit en erreur. La logique était incorrecte. Cela semble fonctionner pour moi maintenant.

 -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementSsortingng:(NSSsortingng *)ssortingng { BOOL result = YES; NSSsortingng *targetSsortingng = @"."; if([textField.text rangeOfSsortingng:targetSsortingng].location != NSNotFound) { if([ssortingng isEqualToSsortingng:targetSsortingng]) { result = NO; } } return result; } 

J'espère que cela aide.