13

iMessage アプリの拡張機能内にUIAlertControllerのスタイルでを表示する方法を見つけようとしています。UIAlertControllerStyleActionSheet

問題は、呼び出し時に表示されると、アクション シートがネイティブの iMessage テキスト フィールドの下に表示されることです。

[self.view.window.rootViewController presentViewController:actionSheetController animated:YES completion:NULL];

これを修正するにはどうすればよいですか?

コード:

UIAlertController *actionSheetController = [UIAlertController alertControllerWithTitle:NSLocalizedString(@"Clear", nil) message:nil preferredStyle:UIAlertControllerStyleActionSheet];

UIAlertAction *clear = [UIAlertAction actionWithTitle:NSLocalizedString(@"Clear", nil) style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action)
{
    [self clear];
}];

UIAlertAction *cancel = [UIAlertAction actionWithTitle:NSLocalizedString(@"Cancel", nil) style:UIAlertActionStyleCancel handler:^(UIAlertAction *action)
{}];

[actionSheetController addAction:clear];
[actionSheetController addAction:cancel];

[self.view.window.rootViewController presentViewController:actionSheetController animated:YES completion:NULL];

ここに画像の説明を入力

4

4 に答える 4

3

これが回避策です。少しアニメーションを追加して、スムーズにするかもしれません。

[self.view.window.rootViewController presentViewController:actionSheetController animated:YES completion:^{
    actionSheetController.view.frame = CGRectOffset(actionSheetController.view.frame, 0, -40);
}];
于 2016-10-07T15:15:52.820 に答える
-1

thisによると、次の方法で全画面表示をリクエストできます。

[self requestPresentationStyle:MSMessagesAppPresentationStyleExpanded];

コードの前に:

[self.view.window.rootViewController presentViewController:actionSheetController animated:YES completion:NULL];
于 2016-10-07T17:48:46.327 に答える