clavier cache mon picker view

hedihedi Membre
02:16 modifié dans Vos applications #1
bonjour a tous
après un long travail j'ai enfin réussi a faire afficher un pickerView a la place d'un clavier sauf que LE CLAVIER S'AFFICHE TOUJOURS avec mon pickerView et il le cache
est ce que vous avez une idee d'ou vient mon erreur
Je vous donne le code
De plus j'ai besoin de mettre un bouton ok pour que le pickerView disparaissent est ce que vous avez une idee merci pour les effort

Mon .h

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

IBOutlet UIPickerView *pickerView;
NSMutableArray *arrayColors;
}

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

- (IBAction) Recherche :(id)sender;

@end

Mon .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: @Sélectionnez une agence, @Agence 1, @Agence 2, @Agence 3, @Agence 4,  nil] retain];
pickerView.transform = CGAffineTransformMakeScale(0.5, 0.5);
[pickerView selectRow:1 inComponent:0 animated:NO];
    agence.text= [arrayColors objectAtIndex:[pickerView selectedRowInComponent:0]];


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];
}
[self.navigationController.view bringSubviewToFront:pickerView];
}


- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    if(textField == nomTextField || textField == prenomTextField || textField == agence) {
        [nomTextField resignFirstResponder];
        [prenomTextField resignFirstResponder];
[agence 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 {
// Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];

// Release any cached data, images, etc that aren't in use.
}

- (void)viewDidUnload {

}

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

@end


Voila Merci beaucoup pour votre aide


Réponses

  • BunoBuno Membre
    02:16 modifié #2

    Normal.
    - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField

    Une fois que tu es dedans, ça veut dire que le clavier est affiché, donc ce n'est pas ici qu'il faut afficher ton picker...mais plutôt à  l'init de ton textField.


    En gros:
    <br />UIPIckerView* pw = [[UIPickerView alloc] initWithFrame:CGRectZero];<br />// ici le custom de ton picker<br />[textField setInputView:pw];<br />[px release];<br />
    
Connectez-vous ou Inscrivez-vous pour répondre.