2013-12-19 28 views
9

私のアプリケーションからカレンダーを開くサンプルコードが見つかりましたが、特定の日付に開くことができません。特定の日付のネイティブカレンダーを開くためのURLスキーム

NSString* launchUrl = @"calshow://"; 
[[UIApplication sharedApplication] openURL:[NSURL URLWithString: launchUrl]]; 

ユーザーは、それが特定の日付を表示するカレンダーを開くので、とき「lunchUrl」文字列の末尾に特定の日付を追加する方法はあります。

@ "calshow://?= 2013 12 19"、@ "calshow://?= 2013-12-19"、@ "calshow://?= 2013 + 12 + 19 "となる。これらのどれも私のために働くようには見えません...どんなアイデアでも何が間違っているのですか?

答えて

25

私はこのURLスキームで少し演奏し、それを行う方法を見つけました。主な二つの点は以下のとおりです。

:ここでは基準日(2001年1月1日)

がコードであるため、

  1. calshow:
  2. パスタイムスタンプの後に "//" を使用しないでください
    - (void)showCalendarOnDate:(NSDate *)date 
    { 
        // calc time interval since 1 January 2001, GMT 
        NSInteger interval = [date timeIntervalSinceReferenceDate]; 
        NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"calshow:%ld", interval]]; 
        [[UIApplication sharedApplication] openURL:url]; 
    } 
    

    そしてこれは、私はそれを呼び出す方法です:

    // create some date and show the calendar with it 
    - (IBAction)showCalendar:(id)sender 
    { 
        NSDateComponents *comps = [[NSDateComponents alloc] init]; 
        [comps setDay:4]; 
        [comps setMonth:7]; 
        [comps setYear:2010]; 
    
        NSCalendar *cal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
    
        [self showCalendarOnDate:[cal dateFromComponents:comps]]; 
    } 
    

    おそらく、calshow:は公開URLスキームではないので、Appleがこの方法でそれを使用することに嫌になるかもしれないということを考慮する必要があります。あるいは、私はそれを研究していないだろう。

+0

こんにちはアンドリス、私はその過去の日付のために完璧に働いて、コードの上に使用してきました。私は将来の日付を与える場合、それは現在の日付に戻る。あなたは、将来の日付をopentのためのいくつかの提案をお願いします。 – Surfer

+0

これはデフォルトのカレンダーの上から日付を取得することは可能ですか? – Alok

1

これは、IOS 8上で動作します - 私はRubyMotionを使用していますので、私のコードは次のようになりますちょうどそう2001年1月2日

NSString* launchUrl = @"calshow:86400"; 
[[UIApplication sharedApplication] openURL:[NSURL URLWithString: launchUrl]]; 

にCALを開くには、午前0時00分2001年1月1日からの秒数を追加します。 WHEの

url = NSURL.URLWithString("calshow:#{my_date - Time.new(2001,1,1)}") 
UIApplication.sharedApplication.openURL(url) 
0

スウィフト3

UIApplication.shared.openURL(URL(string: "calshow:\(date.timeIntervalSinceReferenceDate)")!) 

コメントあなたはこれを使用することができますか?

関連する問題