0

uidatepicker を使用して日付入力を取得したい。UITextField の入力ビューを UIDatePicker オブジェクトに変更しました。DatePicker は表示されていますが、問題ありません。しかし、ユーザーが日付ピッカーの外側をタップすると、日付ピッカーが非表示になるように、UITapGestureRecognizer を追加しました。ここで例外が発生します。日付ピッカーを非表示にできません

インターフェイス ファイル:

@interface ViewController : UIViewController <UITextFieldDelegate>

{
    UIDatePicker *anewPicker;
    UITapGestureRecognizer *tapGestureRecognizer;
}

@property (weak, nonatomic) IBOutlet UILabel *labelOutlet;

@property (weak, nonatomic) IBOutlet UITextField *startTimeTxtOutlet;

@property (weak, nonatomic) IBOutlet UITextField *endTimeTxtOutlet;

@property UIDatePicker *anewPicker;

@property UITapGestureRecognizer *tapGestureRecognizer;

@end

実装ファイル:

@implementation ViewController

@synthesize anewPicker;
@synthesize tapGestureRecognizer;

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.anewPicker = [[UIDatePicker alloc] initWithFrame:[self.view bounds]];
    [anewPicker addTarget:self action:@selector(enteredStartDate:)     forControlEvents:UIControlEventValueChanged];
    self.startTimeTxtOutlet.inputView = self.anewPicker;
    self.endTimeTxtOutlet.inputView = self.anewPicker;


    self.tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self.view     action:@selector(dismissDatePicker:)];
    self.tapGestureRecognizer.numberOfTapsRequired = 1;
    [self.view addGestureRecognizer:self.tapGestureRecognizer];

}



-(void)enteredStartDate:(id)sender
{
    NSLog(@"start date %@",[sender date]);

}

-(void)enteredEndDate:(id)sender
{
    NSLog(@"end date %@",[sender date]);
}



-(void)dismissDatePicker:(UIGestureRecognizer*)gestureRecognizer
{
    //in this function i get the exception
    //other functions are ok

    NSLog(@"tap");

    self.anewPicker.hidden = YES;
}


@end

例外:認識されないセレクターがインスタンスに送信されました

プラットフォームの詳細:

X コード 4.5.2

展開ターゲット: 6.0

ベース SDK: 6.0

4

1 に答える 1

0

このジェスチャのターゲットを追加しましたself.tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissDatePicker:)];が、に変更する必要があります。self.tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self.view action:@selector(dismissDatePicker:)];self.viewself

   self.tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissDatePicker:)];
    self.tapGestureRecognizer.delegate =self;
    self.tapGestureRecognizer.numberOfTapsRequired = 1;
    [self.view addGestureRecognizer:self.tapGestureRecognizer];

お役に立てると思います。

于 2013-04-06T13:49:05.803 に答える