「ウィンドウ ベースのアプリケーション」テンプレートに基づいており、サブビューが埋め込まれたメイン ビューを使用する iPhone アプリケーションがあります。
一部のアクションでは、ユーザーによる確認が必要です。したがって、UIActionSheet を作成し、ユーザーにフィードバックを求めます。
問題は、アクション シートがまったく表示されないことです。代わりに、画面が暗くなります。シートと要求されたボタンが表示されません。その後、アプリケーションがハングします。画面が暗くなるのは、通常アクション シートを表示するアニメーションの一部としての正常な動作です。
不思議なことに、viewDidLoad メソッドで呼び出された場合、同じコードが正常に機能します。確認が必要なアクションを開始する buttonPressed メソッドで呼び出された場合は機能しません。
- (void) trashButtonPressed {
// This method is called in the button handler and (for testing
// purposes) in the viewDidLoad method.
NSLog( @"trashButtonPressed" );
UIActionSheet* actionSheet =
[[UIActionSheet alloc] initWithTitle: @"Test"
delegate: self
cancelButtonTitle: @"Cancel"
destructiveButtonTitle: @"Delete Sheet"
otherButtonTitles: nil];
[actionSheet showInView: self.view];
[actionSheet release];
}
- (void) willPresentActionSheet:(UIActionSheet *) actionSheet {
NSLog( @"willPresentActionSheet" );
}
- (void) didPresentActionSheet:(UIActionSheet *) actionSheet {
NSLog( @"didPresentActionSheet" );
}
- (void) actionSheet:(UIActionSheet *)actionSheet
didDismissWithButtonIndex:(NSInteger)buttonIndex {
NSLog( @"actionSheet:didDismissWithButtonIndex" );
}
ご覧のとおり、UIActionSheetDelegateProtocol のプロトコル ハンドラーにいくつかのログ メッセージを追加しました。"will present" および "did present" メソッドは期待どおりに呼び出されますが、シートは表示されません。
ここで何が問題なのか、誰か知っていますか?