2010-07-11 4 views
0

J'ai créé un UITextField et une vue personnalisée. après que j'ai ajouté cette vue personnalisée en tant que "inputView" à mon UITextField.Renvoyer les entrées à UITextfield avec inputView personnalisé

amountKeyboardViewController *amountKeyboard = [[amountKeyboardViewController alloc] initWithNibName:@"amountKeyboardViewController" bundle:nil]; 

amountTextField.inputView = amountKeyboard.view; 

[amountTextField becomeFirstResponder]; 

Cela fonctionne très bien. mais puis-je remplir mon "amountTextField" avec l'entrée cliquée dans ma vue personnalisée (UIButtons)?

merci pour quelques conseils!

Répondre

1

dans votre contrôleur amountTextField vous devez écrire le code suivant dans le fichier .h

créer la propriété de votre textfield

@property(nonatomic,retain)UiTextField *txt; //whatever your textfield name 

Maintenant dans le fichier .m, écrivez ce qui suit

@synthesize txt; 

écrire déclaration suivante où vous créez objet de amountKeyboardViewController

amountKeyboardViewController *amountKeyboard = [[amountKeyboardViewController alloc] initWithNibName:@"amountKeyboardViewController" bundle:nil] 
amountKeyboard.objamountTextField = self; 

maintenant dans le contrôleur amountKeyboardViewController écrire le code suivant

@class amountTextField;  //forward declaration 

puis créer un objet de cette classe

amountTextField *objamountTextField; 

puis créez propriété de

@property(nonatomic,retain)amountTextField *objamountTextField; 

maintenant sur le bouton de clic

-(IBAction)clickof1 
{ 
    if([amountTextField.text length] <= 0) 
     objamountTextField.txt.text = @"1"; 
    else 
     objamountTextField.txt.text=[objamountTextField.txt.text stringByAppendingString:@"1"]; 
} 
+0

je vais essayer ce soir et accepter votre réponse si son fonctionnement. Merci de votre soutien. deux choses: "contrôleur amountTextField" voulez-vous dire mon contrôleur de vue où mon amountTextField est défini comme une variable d'instance? 'amountKeyboard.objamountTextField = self,' pouvez-vous me donner une explication rapide? – choise

+0

Oui, le contrôleur amountTextField signifie votre contrôleur de vue où amountTextField est défini. Dans la classe amountKeyboardViewController vous pouvez voir que j'ai créé un objet de amountTextField et aussi créer une propriété donc nous devons définir cet objet – Reena

+0

je comprends complètement maintenant. Merci :) – choise

1

Vous voulez dire que si vous appuyez sur 1, '1' devrait apparaître dans le champ de texte.

après cela, si vous appuyez sur 2, il affichera «12».

Voulez-vous comme ceci? Vous devez écrire IBaction pour tous les boutons par exemple.

-(IBAction)clickof1 
{ 
    if([amountTextField.text length] <= 0) 
     amountTextField.text = @"1"; 
    else 
     amountTextField.text = [amountTextField.text stringByAppendingString:@"1"]; 
} 

-(IBAction)clickof2 
{ 
    if([amountTextField.text length] <= 0) 
     amountTextField.text = @"2"; 
    else 
     amountTextField.text = [amountTextField.text stringByAppendingString:@"2"]; 
} 

comme vous devez écrire IBAction pour tous vos boutons

+0

oui je pensais, mais: mes actions sont dans mon amountKeyboardViewController et non pas dans mon contrôleur où mon textfield est créé. Et si je veux utiliser ce clavier ailleurs? dois-je toujours écrire toutes mes actions pour chaque champ de texte? – choise

+0

vous devez créer la propriété de votre zone de texte et vous pouvez accéder à celle de la classe amountKeyboardViewController en utilisant la déclaration avant et vous pouvez définir la valeur – Reena

+0

oh s'il vous plaît pouvez-vous me donner un exemple rapide de cette déclaration? google stuff semble bizarre – choise