私はiOSにかなり慣れていないので、答えを明確にしてください。UIAlertController を別の UIViewController にカプセル化して、iOS 8 で廃止されたため、UIActionSheet の代わりとして使用することをいじっています。
アイデアは、後方互換性と前方互換性のある UIActionSheet の代替であり、たとえば ImmortalActionSheet と呼ばれます。
コンポーネントが iOS 8 以降で使用されている場合、UIAlertController を使用できます。それ以外の場合は、UIActionSheet にフォールバックします。これにより、私が使用しているアプリケーションに関する多くのアクション シートを置き換える、後方および前方互換性のあるアクション シートになります。はい、下位互換性を維持する必要があります。
これのプロトタイプを作成しましたが、何らかの理由で、ImmortalActionSheet を表示すると、UIAlertController ビュー自体が常に左上 (0, 0) に表示されます。中心を変えても動かない。
-(void) loadView
{
UIView * child = nil;
if ( [UIAlertController class] )
{
UIAlertController * alertController = [UIAlertController alertControllerWithTitle:@"Make Choice!!" message:@"Choose one!" preferredStyle:UIAlertControllerStyleActionSheet];
for (UIAlertAction * action in actions ){
[alertController addAction:action];
}
child = alertController.view;
[self addChildViewController:alertController];
}
self.view = [[UIView alloc] init];
self.view.backgroundColor = [UIColor clearColor];
[self.view addSubview:child];
}