iOS6ですか?iOS7ですか?それを知りたいんです。
連投3です。
対象OSをiOS6からにした場合、iOS7と異なる処理を書かないといけないことがあったりする。 例えばレイアウトやらなんやら。。。
今回クソぅ!と思ったポイントと回避方法を簡単に書いておきます。
まずiOS7かどうか判断するのは
if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1) { //iOS7用の処理 }else{ //iOS6以前の処理 }
これでいけます。
どこでクソぅ!となったかというと、UIActivityViewControllerです。
UIActivityViewControllerはFacebookやTwitter、AirDropなど共有するときに使う機能です。
(下からうねぇっと飛び出してくる。そう、ヤツです。)
iOS6とiOS7では共有できる機能が異なります。
AirDropなんてiOS6では無かったですからね。
以下の例はFacebookとTwitterのみ生かしたままにして、他は1個ずつ指定してブロックしています。
NSArray *shareItems = @[@"共有したい文字", @"共有したいURL"]; NSArray *blockItems = nil; if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1) { //iOS7用 blockItems = @[UIActivityTypePostToWeibo ,UIActivityTypeMessage ,UIActivityTypeMail ,UIActivityTypePrint ,UIActivityTypeCopyToPasteboard ,UIActivityTypeAssignToContact ,UIActivityTypeSaveToCameraRoll ,UIActivityTypeAddToReadingList ,UIActivityTypeAirDrop]; }else{ //iOS6用 blockItems = @[UIActivityTypePostToWeibo,UIActivityTypeMail,UIActivityTypeCopyToPasteboard]; } UIActivityViewController *avc = [[UIActivityViewController alloc] initWithActivityItems:shareItems applicationActivities:nil]; avc.excludedActivityTypes = blockItems;
そうです。ブロックする項目がiOS7だと急に多くなるんです。
if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1) { //iOS7用の処理 }else{ //iOS6以前の処理 }
これで除外する(できる)項目が違うぞ!と明記してあげないとエラーになります。
一度エラーになり、あぁ・・・うまくやってくれないんだね、残念。。となりました。