Select comme en HTML ?

Bonjour, je viens vous demander un renseignement. Je développe une application permettant de prendre une réservation dans un restaurant. Cette personne doit choisir l'heure de sa réservation, j'aimerais donc lui proposer un sélect comme il en existe en Html. Je sais qu'il y a le DatePicker pour effectuer cela, mais dans mon application il est pas adapté de par sa forme (impossible de redimentionner comme je le désir). Ce que je demande c'est s'il existe un autre objet ou une méthode permettant à  l'utilisateur de choisir (et non entrer) une heure de rendez-vous ? De plus je doit borner la prise de rendez-vous (ex : entre 12h et 14h). Que me conseillez-vous ?! Merci de votre réponse. Bien cordialement Walslayer.
Mots clés:

Réponses

  • KixxxKixxx Membre
    Tu peux lier ton UIPickerView à  un UITextField via la propriété InputView.

    Le PickerView s'affichera alors lors du focus sur le UITextField.
  • Merci pour ta réponse, j'ai bien réussi à  mettre un pickerView sur mon TextField. Maintenant j'ai un autre problème..



    Lorsque je clic en premier sur le textField lié au picker, pas de soucis j'ai bien mon picker. Mais si je clic avant sur un autre textFiled et que je revient sur le textField lié au picker, le clavier du textfield précédent reste visible et cache le picker.. Avez vous une idée de la manière dont je doit m'y prendre ?



    Je vous met le code pour que vous puissiez voir s'il y a un problème.



    le .h


    <br />
    #import &lt;UIKit/UIKit.h&gt;<br />
    @interface reservationsViewController : UIViewController &lt;UITextFieldDelegate, UIPickerViewDelegate, UIPickerViewDataSource&gt;<br />
    {<br />
    	//initialisation de notre variable vue<br />
    	NSString *vue;<br />
    	NSMutableArray *tableauHeure;<br />
    	UIPickerView *pickerView;<br />
    }<br />
    @property (weak, nonatomic) IBOutlet UITextField *nombreReservation;<br />
    @property (weak, nonatomic) IBOutlet UITextField *nomReservation;<br />
    @property (weak, nonatomic) IBOutlet UITextField *numeroTel;<br />
    @property (weak, nonatomic) IBOutlet UITextField *mailReservation;<br />
    @property (weak, nonatomic) IBOutlet UITextField *heureReservation;<br />
    @property NSString *vue;<br />
    /*<br />
    * Fonction qui pemrmet de définir l&#39;action du bouton<br />
    */<br />
    -(IBAction)buttonTouched:(id)sender;<br />
    @end<br />
    




    le .m


    <br />
    #import &quot;reservationsViewController.h&quot;<br />
    @interface reservationsViewController ()<br />
    @end<br />
    @implementation reservationsViewController<br />
    @synthesize nombreReservation;<br />
    @synthesize nomReservation;<br />
    @synthesize numeroTel;<br />
    @synthesize mailReservation;<br />
    @synthesize heureReservation;<br />
    @synthesize vue;<br />
    <br />
    - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil<br />
    {<br />
    	self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];<br />
    	if (self) {<br />
    		// Custom initialization<br />
    	}<br />
    	return self;<br />
    }<br />
    - (void)viewDidLoad<br />
    {<br />
    	[super viewDidLoad];<br />
      <br />
    	NSDate *now = [NSDate date];<br />
      <br />
    	NSString *strDate = [[NSString alloc] initWithFormat:@&quot;%@&quot;,now];<br />
    	NSArray *arr = [strDate componentsSeparatedByString:@&quot; &quot;];<br />
    	NSString *heureActuelle;<br />
    	heureActuelle=[arr objectAtIndex:1];<br />
      <br />
    	NSArray *heure = [heureActuelle componentsSeparatedByString:@&quot;:&quot;];<br />
    	NSInteger maintenant=[[heure objectAtIndex:0] intValue];<br />
      <br />
    	//Selection du service en fonction de l&#39;heure actuelle<br />
    	if((maintenant + 2) &lt; 14){<br />
    		tableauHeure = [[NSMutableArray alloc] init];<br />
    		[tableauHeure addObject:@&quot;12h00 &quot;];<br />
    		[tableauHeure addObject:@&quot;12h15 &quot;];<br />
    		[tableauHeure addObject:@&quot;12h30 &quot;];<br />
    		[tableauHeure addObject:@&quot;12h45 &quot;];<br />
    		[tableauHeure addObject:@&quot;13h00 &quot;];<br />
    		[tableauHeure addObject:@&quot;13h15 &quot;];<br />
    		[tableauHeure addObject:@&quot;13h30 &quot;];<br />
    		[tableauHeure addObject:@&quot;13h45 &quot;];<br />
    	}else{<br />
    		tableauHeure = [[NSMutableArray alloc] init];<br />
    		[tableauHeure addObject:@&quot;19h00 &quot;];<br />
    		[tableauHeure addObject:@&quot;19h15 &quot;];<br />
    		[tableauHeure addObject:@&quot;19h30 &quot;];<br />
    		[tableauHeure addObject:@&quot;19h45 &quot;];<br />
    		[tableauHeure addObject:@&quot;20h00 &quot;];<br />
    		[tableauHeure addObject:@&quot;20h15 &quot;];<br />
    		[tableauHeure addObject:@&quot;20h30 &quot;];<br />
    		[tableauHeure addObject:@&quot;20h45 &quot;];<br />
    		[tableauHeure addObject:@&quot;21h00 &quot;];<br />
    		[tableauHeure addObject:@&quot;21h15 &quot;];<br />
    	}<br />
    	pickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(170, 255, 110, 100)];<br />
    	pickerView.delegate = self;<br />
    	pickerView.dataSource = self;<br />
    	pickerView.multipleTouchEnabled = YES;<br />
    	pickerView.showsSelectionIndicator = YES;<br />
    	[pickerView selectRow:0 inComponent:0 animated:NO];<br />
    	[self.view addSubview:pickerView];<br />
    	//[self.view sendSubviewToBack:pickerView];<br />
    	pickerView.hidden = YES;<br />
      <br />
      <br />
    //ajout du titre de la vue<br />
    	self.navigationItem.title = @&quot;Réservation&quot;;<br />
    }<br />
    - (void)viewDidUnload<br />
    {<br />
    	//libération de la mémoire<br />
    	[self setNomReservation:nil];<br />
    	[self setNombreReservation:nil];<br />
    	[self setNomReservation:nil];<br />
    	[self setNumeroTel:nil];<br />
    	[self setHeureReservation:nil];<br />
    	[super viewDidUnload];<br />
    }<br />
    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation<br />
    {<br />
    	return (interfaceOrientation == UIInterfaceOrientationPortrait);<br />
    }<br />
    <br />
    /*<br />
    * Fonction qui permet d&#39;envoyer une requête vers une page web en mode GET<br />
    */<br />
    -(IBAction)buttonTouched:(id)sender<br />
    {<br />
    	//page web a atteindre<br />
    	NSString *urlAsString = @&quot;adresseCaché&quot;;<br />
      <br />
    	//concaténation pour le nom de la réservation<br />
    	NSMutableString *nom = [NSMutableString stringWithCapacity:0];<br />
    	[nom setString:@&quot;?nom=&quot;];<br />
    	[nom appendString:nomReservation.text];<br />
      <br />
    	//concaténation pour le nombre de convives<br />
    	NSMutableString *nombre = [NSMutableString stringWithCapacity:0];<br />
    	[nombre setString:@&quot;&amp;nb=&quot;];<br />
    	[nombre appendString:nombreReservation.text];<br />
      <br />
    	//concaténation pour le numero de telephone<br />
    	NSMutableString *tel = [NSMutableString stringWithCapacity:0];<br />
    	[tel setString:@&quot;&amp;tel=&quot;];<br />
    	[tel appendString:numeroTel.text];<br />
      <br />
    	//concaténation pour le numero de telephone<br />
    	NSMutableString *mail = [NSMutableString stringWithCapacity:0];<br />
    	[mail setString:@&quot;&amp;mail=&quot;];<br />
    	[mail appendString:mailReservation.text];<br />
      <br />
    	//concaténation pour le numero de telephone<br />
    	NSMutableString *heure = [NSMutableString stringWithCapacity:0];<br />
    	[heure setString:@&quot;&amp;heure=&quot;];<br />
    	[heure appendString:heureReservation.text];<br />
      <br />
    	//affihcage des résultats dans le log<br />
    	//NSLog(@&quot;nom : %@&quot;, nomReservation.text);<br />
    	//NSLog(@&quot;nombre : %@&quot;, nombreReservation.text);<br />
    	//NSLog(@&quot;tel : %@&quot;, numeroTel.text);<br />
      <br />
    	//paramètres a envoyer<br />
    	urlAsString = [urlAsString stringByAppendingString:nom];<br />
    	urlAsString = [urlAsString stringByAppendingString:nombre];<br />
    	urlAsString = [urlAsString stringByAppendingString:tel];<br />
    	urlAsString = [urlAsString stringByAppendingString:mail];<br />
    	urlAsString = [urlAsString stringByAppendingString:heure];<br />
    	//NSLog(@&quot;url 2 : %@&quot;,urlAsString);<br />
      <br />
    	NSURL *url = [NSURL URLWithString:urlAsString];<br />
    	NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:url];<br />
    	[urlRequest setTimeoutInterval:30.0f];<br />
    	[urlRequest setHTTPMethod:@&quot;GET&quot;];<br />
    	NSOperationQueue *queue = [[NSOperationQueue alloc] init];<br />
      <br />
    	//tentative de connexion et envoie de la requête<br />
    	[NSURLConnection<br />
    	 sendAsynchronousRequest:urlRequest<br />
    	 queue:queue<br />
    	 completionHandler:^(NSURLResponse *response,NSData *data,NSError *error) {<br />
    		 if ([data length] &gt;0 &amp;&amp; error == nil){<br />
    			 NSString *html = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];<br />
    			 //NSLog(@&quot;réponse = %@&quot;, html);<br />
    			 if(&#33;afficheAlerte(html)){<br />
    				 nomReservation.text=@&quot;&quot;;<br />
    				 nombreReservation.text=@&quot;&quot;;<br />
    				 mailReservation.text=@&quot;&quot;;<br />
    				 numeroTel.text=@&quot;&quot;;<br />
    				 heureReservation.text=@&quot;&quot;;<br />
    			 }<br />
    			<br />
    		 }<br />
    		 else if ([data length] == 0 &amp;&amp;<br />
    				  error == nil){<br />
    			 //NSLog(@&quot;Nothing was downloaded.&quot;);<br />
    		 }<br />
    		 else if (error &#33;= nil){<br />
    			 //NSLog(@&quot;Error happened = %@&quot;, error);<br />
    		 }<br />
    	 }];<br />
    }<br />
    - (void)textFieldDidBeginEditing:(UITextField *)textField<br />
    {<br />
    	if(textField == heureReservation){<br />
    	  <br />
    		[textField resignFirstResponder];<br />
    		//[textField canBecomeFirstResponder];<br />
    		pickerView.hidden=NO;<br />
    		//return YES;<br />
    	}else{<br />
    		pickerView.hidden=YES;<br />
    		//return YES;<br />
    	}<br />
    }<br />
    - (BOOL)textFieldShouldReturn:(UITextField *)textField {<br />
    	if(textField == nomReservation || textField == nombreReservation || textField == numeroTel || textField == mailReservation || textField == heureReservation) {<br />
    		//Permet la rétractation du clavier virtuel<br />
    		[textField resignFirstResponder];<br />
    		//return NO;<br />
    	}else{<br />
    		//return YES;<br />
    	}<br />
    	return YES;<br />
      <br />
    }<br />
    //Retourne le nombre de colonnes dans le picker<br />
    - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)thePickerView {<br />
      <br />
    	return 1;<br />
    }<br />
    - (NSInteger)pickerView:(UIPickerView *)thePickerView numberOfRowsInComponent:(NSInteger)component {<br />
      <br />
    	return [tableauHeure count];<br />
    }<br />
    - (NSString *)pickerView:(UIPickerView *)thePickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {<br />
      <br />
    	return [tableauHeure objectAtIndex:row];<br />
    }<br />
    <br />
    - (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {<br />
    	heureReservation.text= [tableauHeure objectAtIndex:row];<br />
    	pickerView.hidden=YES;<br />
    }<br />
    <br />
    /*<br />
    * Fonction qui permet d&#39;affihcer une boite de dialogue à  l&#39;utilisateur<br />
    */<br />
    bool afficheAlerte(NSString *reponse){<br />
    	NSString *message;<br />
    	bool erreur;<br />
    	//condition de confirmation de la réservation<br />
    	if([reponse isEqualToString:@&quot;OK&quot;]){<br />
    		message = @&quot;Réservation envoyée, vous serez contacté par email dans les plus brefs délais&quot;;<br />
    		erreur=false;<br />
    	}else{<br />
    		message = @&quot;Erreur dans votre saisie&quot;;<br />
    		erreur=true;<br />
    	}<br />
      <br />
    	//paramètrage de la boite de dialogue<br />
    	UIAlertView *alert = [[UIAlertView alloc] initWithTitle: @&quot;Message de confirmation&quot; message: message delegate: nil cancelButtonTitle: @&quot;Ok&quot; otherButtonTitles: nil];<br />
    	[alert show];<br />
    	return erreur;<br />
    }<br />
    <br />
    @end<br />
    
  • KixxxKixxx Membre
    'Kixxx' a écrit:


    Tu peux lier ton UIPickerView à  un UITextField via la propriété InputView.

    Le PickerView s'affichera alors lors du focus sur le UITextField.



    <br />
    [monTextField setInputView:monPickerView];<br />
    




    Simple et efficace : Le pickerview s'affichera lorsque tu cliques sur le textfield en question !!!
  • walslayerwalslayer Membre
    mai 2012 modifié #5
    Merci beaucoup. Voila un problème de résolut ! Encore merci à  vous deux. Bonne continuation !
  • KixxxKixxx Membre
    'walslayer' a écrit:


    Merci beaucoup. Voila un problème de résolut ! Encore merci à  vous deux. Bonne continuation !




    Yeaaah je compte pour 2 !!!
  • walslayerwalslayer Membre
    mai 2012 modifié #7
    image/cliccool.gif' class='bbc_emoticon' alt=' :p ' /> Ok, en plus j'ai pas bus... image/eddy58.gif' class='bbc_emoticon' alt=' :p ' />



    Merci du coup de pouce !
  • KixxxKixxx Membre
    image/wink.png' class='bbc_emoticon' alt=';)' />
Connectez-vous ou Inscrivez-vous pour répondre.