1

ここでスタックに関するいくつかの同様の質問を読みましたが、これまでのところ、どの回答も当てはまらないようです。したがって、答えが得られたら、後で自分をむち打たなければならないほど露骨に明白なものに違いありません。

コードは iPhone では正常に動作しますが、iPad では動作しません。アクション シートの高さはほとんどまたはまったくありません。ツールバーはなく、通常の UIButton から起動されます。ポップオーバーを検討しましたが、これはユニバーサル アプリなので、iPhone と iPad の両方で同じコードを 2 回書き直さず、アプリをできるだけ軽量に保つようにします。

showFromRect と showFromTabbar を試しました。

ありがとう

コード:

    -(IBAction) setDateTime:(id) sender {

        dateSheet = [[UIActionSheet alloc] initWithTitle:nil delegate:nil cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:nil];   
        [dateSheet setActionSheetStyle:UIActionSheetStyleBlackTranslucent];

        CGRect pickerFrame = CGRectMake(0, 44, 0, 0);

        UIDatePicker *appointmentDayPicker = [[UIDatePicker alloc] initWithFrame:pickerFrame];

        [appointmentDayPicker setDatePickerMode:UIDatePickerModeDateAndTime];

        [dateSheet addSubview:appointmentDayPicker];
        [appointmentDayPicker release];

         UIToolbar *controlToolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, dateSheet.bounds.size.width, 44)];

        [controlToolBar setBarStyle:UIBarStyleBlack];
        [controlToolBar sizeToFit];

        UIBarButtonItem *spacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];

        UIBarButtonItem *setButton = [[UIBarButtonItem alloc] initWithTitle:@"Set" style:UIBarButtonItemStyleDone target:self action:@selector(dismissDateSet)];

        UIBarButtonItem *cancelButton = [[UIBarButtonItem alloc] initWithTitle:@"Cancel" style:UIBarButtonItemStyleBordered target:self action:@selector(cancelDateSet)];

       [controlToolBar setItems:[NSArray arrayWithObjects:spacer, cancelButton,setButton, nil] animated:NO];
       [spacer release];
       [setButton release];
       [cancelButton release];

       [dateSheet addSubview:controlToolBar];
       [controlToolBar release];

       if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
           [dateSheet showFromRect:CGRectMake(100,100, 320, 485) inView:self.view animated:YES];
           [dateSheet setBounds:CGRectMake(0, 0, 200, 485)];
       } else {
           [dateSheet showInView:self.view];
           [dateSheet setBounds:CGRectMake(0, 0, 320, 485)];
       }
    }

編集:写真を追加

ここに画像の説明を入力

4

0 に答える 0