Probleme de PickerView et de clavier

hedihedi Membre
02:21 modifié dans Vos applications #1
bonjour a tous
Voila j'ai toujours un grand souci avec mon code et il faut absolument que je le corrige car il me fait perdre beaucoup de temps.
Je souhaiterai appeler un pickerView au lieu d'un clavier quand je clique sur un champs TextField
En gros dans mon XIB j'ai trois champs
- champs nom donc le clavier est évoqué pour le remplir
- champs prénom donc le clavier est évoqué pour le remplir
- un champs agence et la je voudrais un pickerView dans lequel je sélectionne

Je voudrai donc appeler juste le pickerView dans le troisième champs puis le faire disparaà®tre grâce a un bouton ok ou done
Voici mes .h et .m que j'ai créer
MERCI MERCI Beaucoup pour votre aide

.h



#import <UIKit/UIKit.h>


@interface RechercherViewController : UIViewController <UITextFieldDelegate, UIPickerViewDelegate, UIPickerViewDataSource> {
   
IBOutlet UITextField *nomTextField;
IBOutlet UITextField *prenomTextField;
IBOutlet UITextField *agence;

UIPickerView *pickerView;
NSMutableArray *arrayColors;
}

@property (nonatomic, retain) UITextField *nomTextField;
@property (nonatomic, retain) UITextField *prenomTextField;
@property (nonatomic, retain) UITextField *agence;

- (IBAction) Recherche :(id)sender;


@end

.m

#import "RechercherViewController.h"


@implementation RechercherViewController

@synthesize nomTextField;
@synthesize prenomTextField;
@synthesize agence;

- (void)viewDidLoad {
    [super viewDidLoad];

// Set the title of this view
self.title = @Recherche;

nomTextField.delegate = self;
prenomTextField.delegate = self;
agence.delegate = self;

arrayColors = [[NSArray arrayWithObjects: @Agence 1, @Agence 2, @Agence 3, @Agence 4, nil] retain];

self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSave target:self action:@selector(save:)] autorelease];
}

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
if(textField == agence)
{
pickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(0.0, 264.0, 320.0, 216.0)];
pickerView.delegate = self;
pickerView.showsSelectionIndicator = YES;

[pickerView selectRow:0 inComponent:0 animated:NO];
[self.navigationController.view addSubview:pickerView];
//pickerView.hidden = NO;
}
[self.navigationController.view bringSubviewToFront:pickerView];
}

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    if(textField == nomTextField || textField == prenomTextField) {
        [nomTextField resignFirstResponder];
        [prenomTextField resignFirstResponder];
    }

  return YES;
}
//Retourne le nombre de colonnes dans le picker
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)thePickerView {

return 1;
}

- (NSInteger)pickerView:(UIPickerView *)thePickerView numberOfRowsInComponent:(NSInteger)component {

return [arrayColors count];
}

- (NSString *)pickerView:(UIPickerView *)thePickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {

return [arrayColors objectAtIndex:row];
}


- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {

//NSLog(@Selected Color: %@. Index of selected color: %i", [arrayColors objectAtIndex:row], row);
agence.text= [arrayColors objectAtIndex:row];
}

- (IBAction) Recherche :(id)sender;{


UIAlertView *baseAlert = [[UIAlertView alloc]
  initWithTitle:(@";") message:@Rentrez les bons paramètres de recherche.
  delegate:self cancelButtonTitle:@OK
  otherButtonTitles: nil];
baseAlert.delegate = self;
[baseAlert show];
[baseAlert release];

}

- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

}

- (void)viewDidUnload {

}

- (void)dealloc {
[arrayColors release];
[super dealloc];
}

@end

Réponses

  • BunoBuno Membre
    02:21 modifié #2
    Re,
    CF. MP
    Sinon, concernant ton code, dans le TextFieldShouldBeginEditing, il faut rajouter ceci au tout début de ton if:


    [textField resignFirstResponder];


    Cela aura pour objectif de cacher le clavier.
  • hedihedi Membre
    02:21 modifié #3
    En fait j'ai resolu une partie de mon probleme
    il faut juste rajouter Return NO dans le tetxFieldEditing
    ca permet de n'appeler que le pickerView et pas le clavier
Connectez-vous ou Inscrivez-vous pour répondre.