XCode: Affichage d'une UIDatePicker lorsque l'utilisateur clique sur UITextbox

J'ai déjà fait des recherches à ce sujet à la mort, et trouva des gens de poster exactement la même question sur un certain nombre de sites web, y compris le droit ici dans stackoverflow.

J'ai essayé toutes les suggestions, mais ont été incapables d'obtenir le UIDatePicker à afficher. Il ne semble pas à la matière ce que l'approche que je prends. J'ai essayé d'utiliser le modèle d'héritage où je sous-classe de la UITextBox de contrôle et de le remplacer par défaut de méthodes pour afficher les UIDatePicker puis-je m'assurer que, dans le StoryBoard j'ai défini la classe de mon UITextView contrôle personnalisé de la classe. J'ai essayé par programmation la génération de la UIDatePicker et j'ai aussi essayé en les faisant glisser sur la vue en plan de montage. Quand j'essaye de l'approche programmatique rien n'est affiché, et quand j'essaie de glisser-déposer sur la table de montage séquentiel, il s'affiche en permanence. Quand je l'ai mis de l'attribut "caché" il se cache, mais ensuite je n'arrive pas à montrer, même lorsque j'essaie d'ajouter du code à la textboxDidBeginEditing méthode qui devrait l'afficher.
J'ai fait en sorte de régler le UITextView de inputView bien égal à mon UIDatePicker de contrôle.

Rien ne fonctionne! Je ne comprends pas pourquoi Apple n'a pas seulement le UIDatePicker l'une des options par défaut dans la liste déroulante dans les Attributs de l'Inspecteur de la UITextView de contrôle. Qui aurait fait cela de manière beaucoup plus facile.

Ci-dessous est une partie du code de ma classe d'implémentation de fichier.

#import "AddTasksViewController.h"

@implementation AddTasksViewController

@synthesize dueDate;
@synthesize description;
@synthesize shortTitle;
@synthesize datePicker;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        //Custom initialization
        self.dueDate.inputView = datePicker;

    }
    return self;
}

- (IBAction)dueDateDidBeginEditing:(UITextView *)textField 
{  
    [textField resignFirstResponder];
    [datePicker setFrame:CGRectMake(0,200,320,120)];
    [datePicker addTarget:self action:@selector(done) forControlEvents:UIControlEventValueChanged];
    [self.view addSubview:datePicker];
}

Voici ce que mon fichier d'en-tête ressemble à...

#import <UIKit/UIKit.h>

@interface AddTasksViewController : UIViewController

@property (nonatomic, copy) IBOutlet UITextView      *dueDate;
@property (nonatomic, copy) IBOutlet UITextView      *description;
@property (nonatomic, copy) IBOutlet UITextView      *shortTitle;
@property (nonatomic, retain) IBOutlet UIDatePicker    *datePicker;

- (IBAction)doneEditing:(id)sender;
- (IBAction)dateChanged:(id)sender;
- (IBAction)dueDateDidBeginEditing:(UITextView *)textField;

@end

Comme je l'ai déjà mentionné, l'autre approche que j'ai pris (c'est à dire sous-classement UITextView) ne fonctionne pas non plus. J'ai copié le code fourni ici exactement comme il a été spectacle. J'ai ensuite ajouté les classes personnalisées appelé "DateField" pour mon projet (à la fois l'en-tête et les fichiers de mise en œuvre) et remplacé le UITextBox déclaration pour la dueDate avec DateField dans mon AddTaskViewController.h et AddTaskViewController.m les fichiers et fait en sorte que la table de montage séquentiel références ont été mises à jour en sélectionnant DateField pour la classe de contrôle de l'Identité de l'Inspecteur.

Peu importe ce que je fais je ne peux pas obtenir le UIDatePicker à afficher en cliquant sur le UITextView. Lorsque j'ai mis un point d'arrêt, il frappe la dueDateDidBeginEditing méthode donc je sais que quelque chose est déclenché. Le problème est que je ne comprends pas pourquoi une sous-vue n'est pas en montrant avec le UIDatePicker.

Toute aide serait grandement apprécié que cela semble simple, la tâche semble prendre beaucoup, beaucoup plus longtemps qu'il ne le devrait. Je pouvais faire ce genre de choses avec mes yeux fermés et les mains attachées derrière mon dos en Java et C# et pourtant tout est si inutilement compliqué quand il s'agit de l'Objectif-C. La syntaxe vraiment m'irrite.

Tellement de crochets!!! Arghhhh!!!

..savez-vous quelque chose à propos de la source de données et délégué ??
Vous ne pouvez pas configurer votre point de vue dans -initWithNibName:bundle: parce que vos prises sont nul à ce point. Essayez -viewDidLoad.

OriginalL'auteur Ami Schreiber | 2012-01-23