1

Rhomobileに「presentOpenInMenuFromRect」機能を追加しようとしています。ただし、現在のビューを参照するのに問題があります。

Rhomobile関数(###は私の追加をマークします):

- (void)openDocInteractCommand:(NSString*)url {
if (NSClassFromString(@"UIDocumentInteractionController")) {
    NSURL *fileURL = [NSURL fileURLWithPath:url];

    UIDocumentInteractionController* docController = [UIDocumentInteractionController interactionControllerWithURL:fileURL];

    docController.delegate = self;//[AppManager instance];

    BOOL result = [docController presentPreviewAnimated:YES];

    if (!result) {
      ###
        BOOL isValid = [docController presentOpenInMenuFromRect:CGRectZero inView:self.view animated:YES];
      ###
    }    
}
}

基本的に、プレビューが失敗した場合は、[開く]メニューを開きます。これは、.KMZ(Google Earth KMLファイル)を開こうとしていて、プレビューできないためです。

完全なソースコード:https ://github.com/rhomobile/rhodes/blob/master/platform/iphone/Classes/AppManager/AppManager.m

ありがとう、

ニック、

4

2 に答える 2

2

これが私の問題を解決するコードです:

  - (void)openDocInteractCommand:(NSString*)url { // inView:(UIView*)view
if (NSClassFromString(@"UIDocumentInteractionController")) {
    NSURL *fileURL = [NSURL fileURLWithPath:url];

    UIDocumentInteractionController* docController = [UIDocumentInteractionController interactionControllerWithURL:fileURL];

    docController.delegate = self;//[AppManager instance];

    BOOL result = [docController presentPreviewAnimated:YES];

    if (!result) {
        [docController retain];
        CGPoint centerPoint = [Rhodes sharedInstance].window.center;
        CGRect centerRec = CGRectMake(centerPoint.x, centerPoint.y, 0, 0);
        BOOL isValid = [docController presentOpenInMenuFromRect:centerRec inView:[Rhodes sharedInstance].window animated:YES];
    }
}
}

- (void)documentInteractionControllerDidEndPreview:(UIDocumentInteractionController *)docController
{
[docController autorelease];
}
于 2012-09-01T13:37:36.883 に答える
1

AppManagerクラスはUIViewControllerからではなくNSObjectから継承します-どうしてそれは名前の付いたプロパティを持つのでしょうviewか?ビューまたはビューコントローラを表示する別の方法を見つける必要があります(おそらくアプリケーションのメインウィンドウを使用します)。

于 2012-08-31T22:02:49.253 に答える