2

私は iOS プログラミングにかなり慣れていないので、これは本当に単純な間違いかもしれません。とにかく、ユーザーが UIDatePicker で日付を入力し、UIBarButtonItem で選択を確認できるように、「通常の」ビューの上に表示したいサブビューがあります (これにより、サブビューが消えるように促されます)。 . 問題は、コントロール要素 (ピッカーとボタン) が「通常の」ビューの上に表示されているにもかかわらず、タップやその他のジェスチャーに反応しないことです。「通常の」ビューの一部であるボタンが代わりに応答することに気付きましたが、このボタンはサブビューの下にあり、表示されていません。サブビューとその要素を生成するコードは次のとおりです。

UIView * newView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 0)];
newView.backgroundColor = [UIColor colorWithWhite:1 alpha:1];

UIToolbar * toolbar = [[UIToolbar alloc] initWithFrame: CGRectMake(0, 0, 320, 49)];
toolbar.barStyle = UIBarStyleBlack;

UIBarButtonItem *infoButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:nil action:@selector(dismissCustom:)];
toolbar.items = [NSArray arrayWithObjects:infoButtonItem, nil];

UIDatePicker *datePicker = [[UIDatePicker alloc] init];
datePicker.datePickerMode = UIDatePickerModeDate;
datePicker.hidden = NO;
datePicker.date = [NSDate date];
datePicker.frame = CGRectMake(0, 49, 320, 250);
datePicker.autoresizingMask = UIViewAutoresizingFlexibleWidth;
[datePicker addTarget:self action:@selector(pickerDateChanged:) forControlEvents:UIControlEventValueChanged];
[newView addSubview:datePicker];

[newView addSubview:toolbar];
[self.view addSubview:newView];

[self.view bringSubviewToFront:newView];

newView.tag = 1;

メソッドdismissCustom:とメソッドpickerDateChanged:は次のとおりです。

-(void)pickerDateChanged:(UIDatePicker *)sender
{
    NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateStyle:NSDateFormatterMediumStyle];
    [dateFormatter setTimeStyle:NSDateFormatterNoStyle];

    NSLog(@"Picked the date %@", [dateFormatter stringFromDate:[sender date]]);

    dateButton.titleLabel.text = [dateFormatter stringFromDate:sender.date];
}

-(void)dismissCustom:(UIBarButtonItem *)sender
{
     UIView * newView = [[UIView alloc] viewWithTag:1];
     [newView removeFromSuperview];
}

何が欠けている/間違っているのか誰にも分かりますか? どんな助けでも大歓迎です!乾杯

4

1 に答える 1

2

少なくともボタンには、アクションの touchUpInside イベントを追加する必要があります。

[button addTarget:self action:@selector(buttonPressed) forControlEvents:UIControlEventTouchUpInside];
于 2013-01-16T18:33:53.230 に答える