0

ねえ、別のView Controllerのスクロールビュー内にあるビューにアクションシートを挿入するという問題があります。アクションシートは問題なく動作します。問題は、スクロールビューでまったく下に移動すると、アクションシートが切り取られることです。私はいくつかの解決策を試しましたが、うまくいきませんでした。問題は、スクロールビュー内に配置されたビューにアクションシートが挿入されていることだと思います。代わりにスクロールビューがあるView Controllerからアクションシートを起動する方法を知っている人はいますか? これが私が今それをやろうとしている方法です:

ボタンがタッチされると、次のメソッドが呼び出されます。

- (IBAction)callDP:(id)sender {

    UIButton *selectedButton = (UIButton *)sender;

    actionSheet = [[UIActionSheet alloc] initWithTitle:nil delegate:nil cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:nil];

    [actionSheet setActionSheetStyle:UIActionSheetStyleBlackTranslucent];

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

    datePickerView = [[UIDatePicker alloc] initWithFrame:pickerFrame];
    datePickerView.tag = 10;

    [datePickerView addTarget:self action:@selector(changeDate:)   forControlEvents:UIControlEventValueChanged];

    [actionSheet addSubview:datePickerView];
    [actionSheet setTitle:@"Start Date"];        
    UISegmentedControl *closeButton = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObject:@"Done"]];
    closeButton.momentary = YES; 
    closeButton.frame = CGRectMake(260, 7.0f, 50.0f, 30.0f);
    closeButton.segmentedControlStyle = UISegmentedControlStyleBar;
    closeButton.tintColor = [UIColor blackColor];
    [closeButton addTarget:self action:@selector(dismissActionSheet) forControlEvents:UIControlEventValueChanged];
    [actionSheet addSubview:closeButton];


    datePickerView.datePickerMode = UIDatePickerModeDate;


   //THIS IS THE PART THAT I THINK I AM HAVING THE PROBLEM WITH 

   // [actionSheet showFromToolbar:self.toolbarItems];
    //[actionSheet showFromTabBar:self.parentViewController.tabBarController.tabBar];
    [actionSheet showInView:self.parentViewController.view];


}

ここで、ビューをスクロールビューに挿入します。別の uiviewcontroller クラスのビューを使用してすべてを制御するように設定しました。私がそうする理由は、スクロール可能な部分を持つことができるようにするためですが、必要なものすべてをプログラムで実行しなくても視覚的に作成できるようにするためです....それがちょっと混乱している場合は申し訳ありません. 必要かどうかは明確にできます...しかし、ここにあります。スクロール ビューに入れたいビューを含むビュー コントローラー クラスは、登録ページと呼ばれます。actionSheet を呼び出す registrationPage の内部。どう考えているか教えてください...

registrationPage = [[RegistrationPageToInsertViewController alloc]init];

    viewToInsert = registrationPage.view;

    [scrollView addSubview:viewToInsert];
    [scrollView setContentSize:viewToInsert.frame.size];
//    [scrollView sendSubviewToBack:imgView];

    //scrollView.contentSize=CGSizeMake(320,416);
    [self.view bringSubviewToFront:scrollView];

私が話していることを理解するのに役立ついくつかのスクリーンショットを次に示します。 これは、ボタンが画面の下部にあるときにボタンをクリックすると起こることです

これは、画面を少し下にスクロールして生年月日ボタンを押すと起こることです

4

1 に答える 1

1

この行の代わりに

[actionSheet showInView:self.parentViewController.view]; 

このようにしてみてください。

[actionSheet showInView:self.view];

私が言うようにやってください。ペン先またはviewControllerがあります。なんでもいい。あなたが持っているものにscrollViewをsubViewとして追加するだけです。次に、すべてのテキストフィールド、ラベルを追加するだけで、すべてscrollViewのサブビューになります。これが正しい方法です。アクションシートを提示する場合は、それを自分で表示する必要があります。表示のみ。

于 2012-04-29T04:40:56.850 に答える