2

UIModalPresentationFormSheetビュースタイルを使用してiPadアプリでモーダルviewControllerを表示しようとしています。メールアプリの新しいメッセージUI/アニメーションに似たものを作成したいと思っています。

正しく動作していないものが2つあります。表示されるモーダルviewControllerは、常にy = 0にアニメートします。つまり、メールアプリの場合のように、ステータスバーの下の一部のピクセルではなく、ビューの最上部にアニメートします。

ドキュメントには次のように書かれています。

UIModalPresentationFormSheet表示されるビューの幅と高さは画面の幅と高さよりも小さく、ビューは画面の中央に配置されます。デバイスが横向きでキーボードが表示されている場合、ビューが表示されたままになるように、ビューの位置が上向きに調整されます。カバーされていないすべての領域は、ユーザーがそれらと対話できないように淡色表示されます。

ただし、私の場合、調光はなく、modalViewControllerの下のparentViewと対話できます。

modalViewを表示するコントローラーこれを実行します。

AddNewItemViewController *newItemViewController = [[AddNewItemViewController alloc] initWithNibName:@"AddNewItemViewController" bundle:nil];
[self presentModalViewController:newItemViewController animated:YES];
[newItemViewController release];

提示されているviewControllerで、これを行います。

- (void)viewDidLoad {

    [nameField becomeFirstResponder];
    [self setModalTransitionStyle:UIModalTransitionStyleCoverVertical];
    [self setModalPresentationStyle:UIModalPresentationFormSheet];
    [super viewDidLoad];
}

誰かが私を助けてくれることを願っています。

親とmodalViewControllerに設定する必要のある他のプロパティはありますか?

viewDidLoadは、この設定を行うのに適切な場所ではありませんか?

前もって感謝します:)

4

1 に答える 1

3

presentModalViewControllerを呼び出す前に、モーダルビューを作成するときに、トランジションとプレゼンテーションのスタイルを設定します。モーダルビューを作成するビューがそのオブジェクトを「所有」していることを忘れないでください。このモーダルビューをアプリの他の場所に実装し、さまざまなトランジションまたはプレゼンテーションスタイルが必要になる可能性があるため、所有者にこれらのプロパティを設定してもらいます。このようにして、必要に応じて毎回設定します。

    AddNewItemViewController *newItemViewController = [[AddNewItemViewController alloc] initWithNibName:@"AddNewItemViewController" bundle:nil];
    newItemViewController.modalPresentationStyle = UIModalPresentationFormSheet;
    [self presentModalViewController:newItemViewController animated:YES];
    [newItemViewController release];

viewDidLoadでbecomeFirstResponderを呼び出すのは正しいです。

于 2011-02-25T04:27:52.277 に答える