1

UIAlertController を使用して、ピッカー、キャンセル、完了ボタンのあるビューを表示する必要があります。ここに私が書いたコードがあります:

UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"" message:@"" preferredStyle:UIAlertControllerStyleActionSheet];
        UIAlertAction *alertAction = [UIAlertAction actionWithTitle:@"" style:UIAlertActionStyleDefault handler:nil];
        [alertController addAction:alertAction];
        [alertController.view addSubview:pickerView];
        [alertController.view addSubview:cancelBtn];
        [alertController.view addSubview:doneBtn];
        [alertController.view setBounds:CGRectMake(0, 180, self.view.frame.size.width, 400)];

これは、現在のView Controllerメソッドを呼び出す方法です。

UIPopoverPresentationController *popover = alertController.popoverPresentationController;
       if (popover)
       {
          popover.sourceRect = CGRectMake(0, 0, 320, 550);
          popover.permittedArrowDirections = UIPopoverArrowDirectionAny;
        }
 [self presentViewController:alertController animated:YES completion:nil];

アラート コントローラー画面が画面に表示された後、キャンセル ボタンと完了ボタンをタップできず、画面のどこでもタップできません。この問題を解決するために私を助けてください。

設定の境界がない場合、キャンセル ボタンと完了ボタンがページの下部に表示されます。 ここに画像の説明を入力

alertcontroller に境界を設定すると、適切なビューが表示されますが、何も選択できません。 ここに画像の説明を入力

4

1 に答える 1

0

あなたの境界が正しくないに違いない。したがって、この行:

[alertController.view setBounds:CGRectMake(0, 180, self.view.frame.size.width, 400)];

ビューの境界を 180 から開始するように設定しています。

編集:以下のコメントに基づいてボタンの位置を設定したい場合は、アラートビューの境界ではなく、ボタンのフレームを変更する必要があります。

フレームは、親ビューの座標系に基づくビューの位置であることを忘れないでください。Bounds は、独自の座標系に関連するビューの制限です。

于 2014-10-28T08:45:10.377 に答える