Salut Je fais un programme qui est entré par le clavier et je me demandais s'il y avait un moyen d'obtenir une entrée du clavier et de le stocker dans un objet NSString
.Comment lire l'entrée du clavier dans Objective-C
Répondre
Si vous faites cela comme une application de ligne de commande, puis le code est ici je l'ai écrit la semaine dernière pour obtenir une ligne de l'invite de commande (je l'ai fait une catégorie NSString
):
+ (NSString *) stringFromStandardInDelimitedByCharactersInSet:(NSCharacterSet *)delimiters {
NSMutableString * string = [NSMutableString string];
unichar input = '\0';
while (input = getchar()) {
if ([delimiters characterIsMember:input]) { break; }
[string appendFormat:@"%C", input];
}
return string;
}
Et puis je « d utiliser comme ceci:
NSString * input = [NSString stringFromStandardInDelimitedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];
il fait très bien gérer pas les caractères unicode (malgré l'utilisation d'un unichar), parce que getchar() ne retourne char régulier. Cependant, pour l'entrée de texte basique en ligne de commande, cela fonctionne plutôt bien. Cependant, soyez averti que cela bloquera le thread sur lequel il est exécuté (puisque getchar() est un appel bloquant).
Pourquoi objective-c ne vient pas avec une instruction native comme scans dans c? – innuendoreplay
- (id)init {
if(!(self = [super init])){
return nil;
}
void (^monitorHandler)(NSEvent *);
monitorHandler = ^(NSEvent *theEvent){
switch ([theEvent keyCode]) {
case 123: // Left arrow
NSLog(@"Left behind.");
break;
case 124: // Right arrow
NSLog(@"Right as always!");
break;
case 125: // Down arrow
NSLog(@"Downward is Heavenward");
break;
case 126: // Up arrow
NSLog(@"Up, up, and away!");
break;
default:
break;
}
};
// Creates an object we do not own, but must keep track
// of so that it can be "removed" when we're done
[NSEvent addGlobalMonitorForEventsMatchingMask:(NSKeyDownMask) handler:monitorHandler];
return self;
}
Pourquoi pas cela?
NSFileHandle *kbd = [NSFileHandle fileHandleWithStandardInput];
NSData *inputData = [kbd availableData];
NSString *option = [[NSString alloc] initWithData:inputData encoding:NSUTF8StringEncoding];
- 1. Analyseur AMF0 dans ObjectiveC
- 2. Manière lispy de lire l'entrée d'utilisateur du clavier dans Clojure?
- 3. Personnalisation de writeToFile dans ObjectiveC
- 4. Combine chaîne en ObjectiveC
- 5. NSString question ObjectiveC
- 6. Comment lire les données du clavier et le stocker dans un fichier, shellscript
- 7. Comment résoudre les fuites dans le code suivant? ObjectiveC
- 8. Chargement d'une séquence d'images dans InterfaceBuilder -ObjectiveC
- 9. MVC utilisé dans la programmation ObjectiveC
- 10. Reliure ObjectiveC classe C# problème
- 11. alloca et ObjectiveC Garbage Collector
- 12. Comment forcer le clavier SIP sur Windows Mobile à lire les nouveaux paramètres du registre?
- 13. Opera navigation du clavier
- 14. Syntaxe ObjectiveC pour la spécification du nom du protocole dans la méthode Argument
- 15. en utilisant un istream_iterator pour lire dans un vecteur de structs du clavier?
- 16. Hiding du clavier
- 17. Comment effacer la mémoire du clavier?
- 18. Qt - Disposition du clavier
- 19. Ignorer l'entrée du clavier
- 20. Comment tester les événements du clavier jQuery?
- 21. Test du 'Ctrl' du clavier en C#
- 22. Écriture du clavier numérique
- 23. iOS: remplacement du clavier
- 24. Gestion du clavier dans la liste déroulante
- 25. Changer la couleur du clavier dans l'iphone
- 26. Cocoa Touch - Capture du clavier
- 27. Combiner la combinaison du clavier
- 28. Allocation de mémoire dynamique 2D - ObjectiveC
- 29. ComboBoxEx32 (CComboBoxEx) comportement du clavier
- 30. Comment puis-je vérifier le contenu des tableaux? Analyse du fichier XML avec ObjectiveC
Quel type de programme? Probablement pas une interface graphique traditionnelle, puisque les champs gèrent leur propre entrée. Une application de console? Ou quelque chose avec des raccourcis clavier pour les outils, à la Photoshop? Un jeu? –