AVPlayerViewController の controlStyle

投稿者: Anonymous これまで動画再生には MPMoviePlayerController を使用していたのですが、iOS 9.0 からdeprecated となったので AVPlayerViewController に乗り換えようと思っているのですが、MPMoviePlayerControllerで、 moviePlayerController.controlStyle = MPMovieControlStyleFullscreen; とした時に画面左上に表示されていた再生を終了する[Done]ボタンをAVPlayerViewControllerで表示させる方法がわかりません。 avPlayerViewController.showsPlaybackControls = YES; としても再生コントロールは表示するのですが、再生を終了するボタンがありません。 AVPlayerViewController を使って再生画面を表示する時に[Done]ボタンもしくは再生終了させるボタンを表示させる方法を教えてください。 解決 presentViewControllerメソッドで、AVPlayerViewControllerをモーダル表示すれば、「Done」ボタンが表示されます。(iOS 9.1のシミュレータで確認しました) モーダル表示ではなく、UINavigationController内で表示しているという場合には、アプリ側で「Done」ボタンを作る必要があると思います。 回答者: Anonymous

破棄ボタンを押したタイミングで保持していたviewControllerを解放したい

投稿者: user15219 storyboardの構成は以下です。 破棄ボタンを押した時に下記の処理を入れています。 let storyboard = UIStoryboard(name: “Main”,bundle:nil) let vc = storyboard.instantiateViewControllerWithIdentifier(“Top”) UIApplication.sharedApplication().keyWindow?.rootViewController = vc しかし、以下のようにもともと表示されていたviewの上に新たなwindowが作られてしまいます。 もともとのviewControllerを解放して、topページに遷移させるには、上記コードをどのように書き換えればよいのでしょうか? コメントいただいたコードを追加したところ、下記のようになりました。 deinitは呼ばれ、解放はされました。 コードは以下のようにしました UIApplication.sharedApplication().keyWindow?.rootViewController? .dismissViewControllerAnimated(true, completion: nil) let storyboard = UIStoryboard(name: “Main”,bundle:nil) let vc = storyboard.instantiateViewControllerWithIdentifier(“FBLogin”) UIApplication.sharedApplication().keyWindow?.rootViewController = vc 解決 iOSでの画面遷移はViewControllerをスタック状に積み重ねることで実現されています。RootViewControllerの子孫階層のViewControllerを解放してしまえば良いので、次のようなコードで実現できるはずです。お試しください。 UIApplication.sharedApplication().keyWindow?.rootViewController? .dismissViewControllerAnimated(true, completion: nil) 回答者: Anonymous

Cannot invoke ‘atan2’ with an argument list of type ‘(Double)’というエラーが出ます。

投稿者: Anonymous Swiftにて以下の様にコードを書いたところ、Cannot invoke ‘atan2’ with an argument list of type ‘(Double)’というエラーが出ます。 let with = 4.0 let pWidth = 0.6 let r = (with/2) – pWidth let atan = atan2((pWidth / 2) / r)//ここにエラーが出ます。 これはどの様な原因で起こっているのでしょうか。 型による問題が起きているという事でしょうか。 すいません、宜しくお願い致します。 解決 atan2は座標(x, y)と座標(0, 0)を結んだ線の角度θを求める関数なので、引数が1つ足りないというエラーです。 この場合はatan((pWidth / 2) / r)で充分かと思われます。 回答者: Anonymous

XcodeでMGIsDeviceOneOfType is not supported on this platform.と表示されてしまいます

投稿者: Anonymous XcodeをVersion 10.0 (10A255)にバージョンアップしました。SwiftのプラグラムをiPhone8 Simulatorで実行すると以下のエラーが表示されるようになりました。また、iPhone X/XR/XS/XS MaxのSimulatorでは以下のエラーは表示されません。なにか、地図関係か何かに変化があったのでしょうか? ご存知の方があれば ご教授ください。 2018-09-19 14:41:26.945506+0900 VoiceToDo1[13120:353456] libMobileGestalt MobileGestalt.c:890: MGIsDeviceOneOfType is not supported on this platform. 解決 同内容のスレッドが、AppleのDeveloper Forumsにありました。 What is MGIsDeviceOneOfType 残念ながらAppleの技術者からのコメントはありませんが、「新しいSDKにありがちな、フレームワークの内部メッセージ(フレームワーク開発者が仕込んだデバッグメッセージ)だろう。今の所実害はないし無視して大丈夫そうだ。」と言うところに落ち着いたようです。 本家StackOverflowのスレッドがこちら。 Xcode Error on Simulation 回答ではなくコメントに「シミュレータじゃなくデバイスで実行(Xcode10正式版、10A255のこと)したらメッセージは出ない」と言う報告もあるので、やはり無視しても問題ないのではないかと思われます。 何やら「自分はこうしたら解決した」と言うやり方を書いている方もいるのですが、それが正しい解決方法だと言う確証がないので、たまたまいろんな要因が重なってその時点で解決できたように見えただけ、と言う可能性も高そうです。 下手に真似すると自分のプロジェクトを壊してしまう可能性もあるので、メッセージが出てくる以外に実害が無いのでしたら、無視した方が良いのではないかと思います。(AppleのSDKの一部には、そんなメッセージが出るものが時々あります。) 回答者: Anonymous

他のファイルからViewControllerのUILabelを変更したい

投稿者: Anonymous 実現したいこと・問題点 Swift初心者です。 表題の通り、他の.swiftファイルから直接、ViewController.swiftに関連付けされているUILabelのテキストを変更することはできないかと思い、後述のようなコードを書きました。 storyboard上にSliderとLabelを配置し、Sliderを変更した際の処理をLowPass.swift内に記述するというようにしています。 このまま実行するとビルドはされるのですが、Sliderの値を変更するとエラーが出てしまいます。 エラーの原因は、LowPass.swiftのvcにnilが入ってしまっていることだとは分かるのですが、改善策が分かりません。 どなたかご教授頂けますでしょうか。 該当のソースコード //ViewController.swift import UIKit class ViewController: UIViewController { @IBOutlet weak var label: UILabel! @IBOutlet weak var slider: UISlider! // LowPass.swiftのインスタンス生成 let lowPass = LowPass() override public func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. slider.maximumValue = Float(150)…(Continue Reading)

iOSのwebViewでjavascriptを呼び出し、返り値を取得したい

投稿者: Anonymous iOSのUIWebViewで、ロードしたページ内のjavascriptを呼び出し戻り値をiOS側に格納したいです。 どのような方法があるでしょうか? 解決 webViewにロードしたhtmlが例えば次のようになっていた場合、 <html> <head> <script> function test(value){ return JSON.stringify({result : value * 2}); } </script> </head> <body> </body> </html> 次のようにstringByEvaluatingJavaScriptFromString:を呼び出すことで、返り値を取得できます。 NSString *function = [NSString stringWithFormat: @”test(%i)”, 1]; NSString *jsonString = [webView stringByEvaluatingJavaScriptFromString:function]; NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding]; NSDictionary *json = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingAllowFragments error:nil]; NSLog(@”json: %@”, json); なお、stringByEvaluatingJavaScriptFromString:の戻り値はNSStringなので、シンプルなデータであればJSONで受け渡しする必要はないです。 また、Objective-C -> JSは以上のように簡潔にできますが、JS…(Continue Reading)

Swift コードで追加した複数のボタンにオートレイアウトの制約をつけたい

投稿者: Anonymous @IBOutletで複数のボタンを追加しておくと、どれぞれにオートレイアウトの制約をつけることができますが、@IBOutletなしでループでボタンを追加した場合、それぞれのボタンにオートレイアウトの制約をつける方法がわかりません。 @IBOutletを使わないのは、前もってボタンの数だけ@IBOutlet var ボタン名:UIButton!を用意する必要があるとの理解からです。 使わない方がスッキリすると考えていることと、ボタンの数が変動するからです。 テストにしているコードを記します。 KeyboardExtentionでの作成において、オートレイアウトでの要素配置が必須ということで、オートレイアウトの制約を設定する必要があり、方法を探しております。 どのように改良すべきか、別の方法の検討が必要なのか、ご提案や改善策をいただければ幸いです。 よろしくお願いいたします。 import UIKit class KeyboardViewController: UIInputViewController { @IBOutlet var nextKeyboardButton: UIButton! override func viewDidLoad() { super.viewDidLoad() // Perform custom UI setup here self.nextKeyboardButton = UIButton(type: .system) self.nextKeyboardButton.setTitle(NSLocalizedString(“Next Keyboard”, comment: “Title for ‘Next Keyboard’ button”), for: []) self.nextKeyboardButton.sizeToFit() self.nextKeyboardButton.translatesAutoresizingMaskIntoConstraints = false self.nextKeyboardButton.addTarget(self, action: #selector(handleInputModeList(from:with:)), for: .allTouchEvents)…(Continue Reading)

UIbutton(Any)の表示・非表示設定

投稿者: Anonymous 環境 swift3 Xcode9.0.1 内容 Storyboard内に用意したボタンを特定の条件下で表示/非表示にしたいのですが @IBAction func button(_ sender: Any){ 処理… } と定義したボタンを”viewDidLoad”内で button.isEnable = false としてもエラーが出てしまいます。 この”button”を非表示にする方法を教えてください。 解決 表示/非表示にしたいのであれば、 button.isEnable = false ではなく button.isHidden = true でうまくいかないでしょうか? 回答者: Anonymous

非同期通信の終了タイミングで処理を呼びだしたい

投稿者: Anonymous AFNetWorking を使用した非同期通信を実装しています。 下記のようなコードで非同期通信にデータを取得することはできました。 しかし通信の終了タイミングで特定の処理を実行する方法がわかりません。 @property NSInteger *pageIndex; @property NSArray *responseData; – (void)viewDidLoad{ self.pageIndex = 1; while (true) { [self getJSON]; NSLog(@”%@”, self.responseData); } } – (void) getJSON{ AFHTTPRequestOperationManager* manager = [AFHTTPRequestOperationManager manager]; manager.responseSerializer = [AFJSONResponseSerializer serializer]; [manager GET:@”http://togech.jp/api/getPosts” parameters:@{@”page”: [NSString stringWithFormat:@”%d”, self.pageIndex]} success:^(AFHTTPRequestOperation *operation, id responseObject) { self.responseData = responseObject; } failure:nil]; self.pageIndex++;…(Continue Reading)

App storeへのRealm使用アプリの申請の際のスキーマバージョンについて

投稿者: Anonymous App StoreにあがってるアプリはRealmを初めて使ったままのスキーマ定義なのでスキーマは変更しておりません。それゆえ、configやスキーマバージョンも書いておりません。 スキーマ定義を変更する必要が出たので今回ローカル上でスキーマのバージョンを上げてマイグレーション処理を行ったりと色々試行錯誤しましたがうまくいかなく、Simulatorで一度アプリを削除してバージョンを0にしたところビルドもマイグレーションもできました。 ただApp store上のアプリはdidFinishLaunchingWithOptionsで定義をせずにアプリを申請していたため、次にアプリをアップデートする際にはdidFinishLaunchingWithOptionsのブロック内にスキーマバージョンを上げて記述し、書かなければならないのですがこの際の値は0で問題ないのでしょうか。 解決 Realmのファイルは各ユーザーのデバイスにそれぞれファイルが存在するわけですので、手元でアプリを削除してうまくいってもリリースされたアプリを使うユーザーのデバイスではそうはなりません。すでにそのアプリを利用しているユーザーのデバイスには変更前のスキーマのファイルがあるので、アプリをバージョンアップした際にはスキーマが一致しないので、スキーマバージョンを上げていなければクラッシュします。 まだアプリをAppStoreで配布してなければ、もちろん開発時は自由に試行錯誤できますが、一度リリースしてしまったなら、アップデートでスキーマを変更するならスキーマバージョンも合わせて上げる必要があります。 ただし、既存のデータを消してしまってもいいのであれば、Realm.RealmConfiguration.deleteRealmIfMigrationNeededプロパティを使うと、マイグレーションが必要な場合は自動的に既存のファイルを消して作り直すということを自動的にやってくれます。 スキーマバージョン0から1のマイグレーション時はデータ削除、1から2のマイグレーション時はデータ移行をする、としたい場合は、私なら下記のように書きます。条件に応じてdeleteRealmIfMigrationNeededプロパティを切り替える方法よりも意図が明確になります。 let config = Realm.Configuration(schemaVersion: 2, migrationBlock: { (migration, schemaVersion) in if schemaVersion < 1 { migration.deleteData(forType: “ModelA”) migration.deleteData(forType: “ModelB”) migration.deleteData(forType: “ModelC”) } if schemaVersion < 2 { migration.enumerateObjects(ofType: “ModelA”) { (newObject, oldObject) in … } migration.enumerateObjects(ofType: “ModelB”) { (newObject, oldObject) in … }…(Continue Reading)

iOS)AudioUnitを用いてマイク入力にLPFをかける方法について

投稿者: Anonymous AudioUnitを用いてマイク入力信号を色々編集するプログラムを書こうとしたのですが、一向に上手く行かないので質問させていただきます。 やりたいこと  マイク入力信号→LPF→コールバック関数( AUNode は二つになるのでしょうか?) 確認済なこと  マイク入力信号→コールバック関数( AUNode は変数名 inNode 1つです) 環境  iOS 7.1.1 バグ  以下のソースの直後のAuGraphStart(mAuGraph)でプログラムが落ちる。  エラーすら出ないときと、OSStatusのエラーコード10863が得られるときがある。 質問内容  上記バグを修正するにはどのように変更したら良いのでしょうか ソース OSStatus status; NewAUGraph(&mAuGraph); AUGraphOpen(mAuGraph); AUNode inNode; //AudioUnit inUnit; AudioComponentDescription acd; acd.componentType = kAudioUnitType_Output; acd.componentSubType = kAudioUnitSubType_RemoteIO; acd.componentManufacturer = kAudioUnitManufacturer_Apple; acd.componentFlags = testAcd.componentFlagsMask = 0; AUGraphAddNode(mAuGraph, &acd, &inNode); AUGraphNodeInfo(mAuGraph, inNode, NULL, &_inUnit); //LPF設定 AUNode…(Continue Reading)

UIActivityViewControllerでFacebookにシェアできない

投稿者: Anonymous 以前まで正常に動作していましたが、 突然Facebookへのシェアができなくなりました。 ActionSheetが表示され、Facebookのアイコンをタップすると テキストが空の状態になってしまいます。 以下のログが出ているようなのですが、 対策をご存知の方いらっしゃいますでしょうか? plugin com.apple.share.Facebook.post invalidated – (IBAction)Share{ NSString *shareText = [NSString stringWithFormat:@”%@”,_contents_decscription]; NSArray *postItem = @[shareText]; UIActivityViewController *ShareActivity = [[UIActivityViewController alloc] initWithActivityItems:postItem applicationActivities:nil]; [self presentViewController:ShareActivity animated:YES completion:nil]; } 解決 この現象は私も確認しています。 私が確認している現象は、 ・テキストのみを埋め込んだ場合、UIActivityViewControllerにFacebookのアイコンが出ない。 ・テキスト+イメージを埋め込んだ場合、UIActivityViewControllerにFacebookのアイコンは出るが、投稿画面はイメージのみ表示されて、テキストが表示されない。(ユーザが入力したテキストはイメージとともに投稿できる) 本家StackOverflowの以下の質問が参考になると思います。 https://stackoverflow.com/questions/29985024/uiactivityviewcontroller-share-only-text iOS8.3を使っていて、Facebookアプリのv29.0以上を使っていると発生するようです。 驚いたことにFacebookアプリを削除すると、正しく動作するようになります。 (FacebookのアカウントはOSの設定で管理されているため、Facebookアプリを削除してもUIActivityViewControllerにFacebookのアイコンが現れ、投稿画面から投稿できます) 5/7にv30.0がリリースされましたが、それでも治っていませんでした。 次のバージョンで修正するとfacebookアプリ開発者から投稿がありました。 https://developers.facebook.com/bugs/949486035103197/ 回答者: Anonymous

NavigationControllerのNavigationBarのタイトルに画像を設定する方法

投稿者: Anonymous NavigationControllerのNavigationBarのタイトルに画像を設定しようとしていますがうまくいきません。 ネットで探してみた所下記方法で大丈夫という説明をみたのですが試してみた所画像が表示されません。 UIImageView *titleImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@”logo.png”]]; self.navigationItem.titleView = titleImageView; 普段NavigationBarは自分でストーリボードから作成していますが、TableViewのスタティックセルはUITableViewControllerでなければ使えないためNavigationControllerのNavigationBarを使おうとしています。 解決 どうぞ。 Objective-C UIImageView *titleView = [UIImageView new]; titleView.frame = CGRectMake(0, 0, 30, 30); titleView.image = [UIImage imageNamed:@”navi_icon”]; titleView.contentMode = UIViewContentModeScaleAspectFit; self.navigationController.navigationItem.titleView = titleView; Swift let titleView = UIImageView(frame:CGRectMake(0, 0, 30, 30)) titleView.image = UIImage(named: “navi_icon”) titleView.contentMode = .ScaleAspectFit self.navigationController.navigationItem.titleView…(Continue Reading)

Lost connection to iPhoneでアプリが落ちてしまいます。

投稿者: Anonymous アプリを実機で動作させると落ちてしまうときがあります。 その際、デバッグエリアに Received memory warning と複数回表示された後、以下の画像が出てきてアプリが落ちます。 ちょっと前まではこの現象は起こらず、最近になって急に出てきました。この際コードはいじっておらず、Storyboardのみいじりました。 iOSシュミレータで実行させた場合は Received memory warning も表示されず、アプリも落ちません。 アプリを素早く動作させた時にも同様に落ちてしまうので、メモリを使いすぎてしまっているためのような気もするのですが、以前には出ていなかったので困惑しています。 どなたか何か知っている方がいましたらよろしくお願いします。 解決 メモリ不足によりアプリがクラッシュしているだけかなと思われます。 一度XcodeのProfile機能を使って、実機で実行した際にどの程度メモリがアロケートされているのか計測してみてはいかがでしょうか。 なお、端末によって積んでいるメモリ量は違いますので、実機でのみメモリ警告が出ることは当然あります。 回答者: Anonymous

cocoapodsのプラットフォームをiOS7以降にすると出るエラーについて

投稿者: Anonymous 現在cocoapodsを利用してライブラリを導入しているのですが、podfileのプラットフォームをiOS7もしくはiOS8にすると以下のようなエラーが出てしまいます。 fatal: Not a git repository (or any of the parent directories): .git fatal: Not a git repository (or any of the parent directories): .git fatal: Not a git repository (or any of the parent directories): .git fatal: Not a git repository (or any of the parent directories): .git fatal: Not a git…(Continue Reading)

音声即時再生のためのコード.prepareToPlay( )をコードに入れたところ、コンパイルエラーが出てしまいました。

投稿者: Anonymous 初めまして。 swiftを勉強し始めて1週間の初心者です。(プログラミングの経験もかなり浅いです。) 先ほど「世界一受けたいiPhoneアプリ開発の授業」という本を元にコードの写経をしていたところ、コンパイルエラーが出てしまいました。 1〜2時間ほど考えてみたり、コードを打ち直してみたり、Xcodeを再起動してみたり、色々試しましたがエラーは消えず…。という状態です。 エラーでは Value of Optional type “AVAudioPlayer” not unwrapped; did you mean to use “!”or”?”? エラーを治すための指示は Fix-It Insert “!” と書いてありますが、!を挿入してもエラーが出たままです。逆に?を挿入したらエラーは無くなるんですが、これってどういうことが原因なのでしょうか? コードは下記になります。(冒頭のcopyrightなどは省略させていただきます。**で囲まれたところにエラーが出ます。) import UIKit import AVFoundation //AVFoundationをインポートする class ViewController: UIViewController { var player:AVAudioPlayer? //音声を制御するための変数 //BGM再生メソッド func play(soundName:String){ //String型の引数からサウンドを読み込む let soundPath = NSBundle.mainBundle().bundlePath.stringByAppendingPathComponent(soundName) //読み込んだファイルにパスをつける let url:NSURL? = NSURL.fileURLWithPath(soundPath) //playerに読み込んだmp3ファイルへのパスを設定する player = AVAudioPlayer(contentsOfURL:…(Continue Reading)

Swift のライブラリ MessageKitについて

投稿者: Anonymous MessageKitのGitHubにあるソースコードで MessageInputBarDelegateプロトコル内に記述されている messagesCollectionView.insertSections([messageList.count – 1]) の意味がよく分かりません。 このコードでsendボタンを押すとメッサージが表示されるようになるのは分かるのですが、 [messageList.count-1]とは何を意味するのでしょうか。 extension ConversationViewController: MessageInputBarDelegate { func messageInputBar(_ inputBar: MessageInputBar, didPressSendButtonWith text: String) { // Each NSTextAttachment that contains an image will count as one empty character in the text: String for component in inputBar.inputTextView.components { if let image = component as? UIImage { let imageMessage =…(Continue Reading)

iBeaconから取得できるRSSIで端末の位置を計算する方法

投稿者: Anonymous iOSアプリ開発で、iBeaconから取得できるRSSI(電波強度)を使って端末の位置(距離)を特定する計算方法が知りたいです。 *A,B,CがiBeacon位置 – (void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region { if (beacons.count > 0) { for (CLBeacon *beacon in beacons) { NSInteger rssi = bracon.rssi; // 距離計算 } } else { NSLog(@”周囲にbeacon端末はありません。”); } } 解決 理論的にはRSSIはデシベル単位の受信電力ですので、AとBの受信電力の比は10 ^ ((RSSI(b) – RSSI(a)) / 10)で求められます。そして受信電力は(一番単純なモデルでは)距離の二乗に反比例するので、先ほどの式の逆数の平方根をとれば距離の比が求められます。距離の比が判明すれば軌跡はアポロニウスの円になりますので、円と円の交点が推算位置になります。 …理屈の上では上記のとおりですが実際の伝播を計算で再現するのは難しいです。精度を求めるのであればビーコンを設置してからRSSIの値をマッピングしたほうがよいです。 回答者: Anonymous

`..

投稿者: Anonymous Swift2.2からSwift3に移行しており、NSMakeRangeを書き換える際にエラーが発生しました。 そのエラーは解消できているのですが、処理でどうしても腑に落ちない点があります。 Swift2.2 let data = “あいうえお”dataUsingEncoding(NSShiftJISStringEncoding) let subData = data?.subdataWithRange(NSMakeRange(0, 10)) Swift3 let data = “あいうえお”.data(using: String.Encoding.shiftJIS) // 10bytes let subData = data?.subdata(in: 0 ..< 10) この場合、NSMakeRange(0, 10)なので0 ..< 11にして、0〜10の範囲を取得できるだろうと思っていたらエラーが発生し、以下のログが出力されました。 Termination app due to uncaught exception NSRangeException, reason: -[_MSInlineData subdataWithRange:]: range {0, 11} exceeds data length 10 今までの記憶では 0 ..< 10 =>…(Continue Reading)

iTunesConnectへアプリのアップロードでバイナリデータが消える。

投稿者: Anonymous みなさま。お疲れ様です。 さっそくですが質問です。 iPadアプリを作成しXcodeにてiTunesConnectにバイナリデータをアップロードしました。 結果は成功と出て、iTunesConnectで確認すると「プレリリース」「ビルド」にアップロードしたバージョンのバイナリデータが処理中になって表示されました。 しかし、数分すると先ほどまで処理中となっていたバイナリデータが消え、どこにも見当たらなくなってしまいました。 また、「バージョン」での「ビルド」選択画面にも、以前にリジェクトされた5つは表示されているのですが、新しいバイナリデータは表示されていません。 同じBuildの物を再度Xcodeで「Upload to App Store」すると、既にアップロードされているとエラーになります。 数回Buildバージョンを1.0.0->1.0.1->1.0.2と番号を上げればアップロードは成功しますが、iTunesConnectでは同じようにバイナリデータが1,2分で消えてしまいます。 原因を探して色々と試してはいるのですが、解決できなかったので投稿させていただきました。 アップロードまでの手順は、Edit SchemesでBuild ConfigurationをReleasesに変更。 その後は「Product」から「Archive」「Validate]「Upload to App Store」でアップロードしました。 Xcode6からXcode7へ以降したのですがここで何か間違ったのかも。。。 みなさまのお力をお貸しください!! よろしくお願いします! // 9月25日 追記 本日、iTunesConnectにアクセスしたところ、iTunesConnectのバージョンアップに伴ってか、昨日アップロードしたのに消えてしまった物が「処理中」と表示されるようになっていました。 // 9月28日 追記 無事、審査に提出することが出来ました。 iTunesConnectからバイナリが表示されていなかった問題はiTunesConnectのバージョンアップが原因だったのかな?と思います。 契約の内容の更新についての同意もまだ途中までだったみたいなので、きちんと最後まで完了しました。 Xcode7に更新してGoogleMaps for iOS を使用していたのが原因?でずっと処理中のままでしたが、Xcode6.4で提出したらあっさり通りました。 Xcode7の時にUpload to App Storeをした際に出たエラー「ERROR ITMS-90535 ,CFBundleExecutable関係のエラーが出た時に「GoolgeMaps.bundle」などの「Executable file」を削除してしまった事が、「処理中」が終わらない原因だったと思います。 この場をお借りして、ご回答してくださった皆様にお礼を申し上げます。 また、お力添えをしていただけると大変助かります。 ありがとうございました! 解決 少し前に、従来まで、別立てで合った、iOS,Mac-OS,Safariのデベロッパープログラムが、一本化されましたが、それに伴い、登録情報の更新(新規に有効となった開発プログラムの税、支払条項)およびアグリーメントの同意が求められていますが、それを放置したりしていませんか?  放置していると、新規のAppはもちろん、Appのアップデートも、前から有効な開発プログラムでも、出来ません。 回答者: Anonymous

MapKitでピンを同時に二つ置きたい

投稿者: user9244 以下のサイトを参考にさせていただき、MapKitを使って、長押しをした場所にピンを置くプログラムを書きました。 逆引きswift 長押しをすると同時に二つのAnnotationを置くようにしたかったのですが、最初の1つのAnnotationしか置くことができません。同時に二つのAnnotationを置くにはどうしたらいいでしょうか。 import UIKit import MapKit import CoreLocation class ViewController: UIViewController, MKMapViewDelegate, CLLocationManagerDelegate { @IBOutlet weak var mapView: MKMapView! let locationManager = CLLocationManager() //長押し検知器 var longtapGesture: UILongPressGestureRecognizer = UILongPressGestureRecognizer() override func viewDidLoad() { super.viewDidLoad() self.locationManager.delegate = self self.locationManager.desiredAccuracy = kCLLocationAccuracyBest self.locationManager.requestWhenInUseAuthorization() self.locationManager.startUpdatingLocation() self.mapView.showsUserLocation = true //長押し検知器の設定 //長押し時に呼びだすメソッド self.longtapGesture.addTarget(self, action: “longPressed:”) //マップに長押し検知器を追加 self.mapView.addGestureRecognizer(self.longtapGesture)…(Continue Reading)

UIPickerViewでの中央選択部の拡大表示について(iOS8)

投稿者: Anonymous iOS8でUIPickerViewを使用しているのですが、項目のtitleが長すぎて、最後が「…」と省略されてしまうので、フォントサイズを調整して対応しようとしました。 pickerView:titleForRow:forComponent: メソッドでは、フォントサイズの調整項目がないので、 pickerView:viewForRow:forComponent:reusingView: メソッドで、UILabelにattributedStringを指定したものを戻り値にして、フォントサイズの調整を行いました。 その目的は上手く果たせたのですが、pickerView:titleForRow:forComponent: メソッドでは、pikerViewの中央選択部位が、非選択部位に対して拡大表示されているのに対し、pickerView:viewForRow:forComponent:reusingView: メソッドでは、その拡大表示効果がなくなっていることに気がつきました(添付図をご参照ください)。 選択項目全体が表示されることが第一優先ではあるのですが、選択部位が拡大表示される効果は、選択時に分かりやすい効果があると思っています。もし、可能であれば、この2つを両立させたいと思っているのですが、UIPickerViewを用いて、これを実現するのは可能でしょうか? もし、可能であるなら、その手法、あるいは例を示唆いただけないでしょうか?  現在、Swiftを使っていますが、Objective-Cでも構いません。よろしくお願いいたします。 ちなみに pickerView:attributedTitleForRow:forComponent: メソッドは、referenceにもdeprecatedとの記載はないのですが、iOS7以降では、上手く稼働しないとの報告もあり、実際試してみましたが、pickerView:titleForRow:forComponent: メソッドとの違いが確認できませんでした(フォントサイズの調整ができませんでした)。 解決 現状のapiだけでは難しそうです。例えできたとしても、かなり無理のある作りにならざるを得ません。 下記のようにdelegateの中でフォントを変更することはできますが(選択部分は拡大と言うよりは単にフォントが大きくなっているように見える)、選択後の動作なので元々の動きとは異なります。また、selectRow:inComponent:animated:で選択した場合にはこのメソッドが呼ばれないため、初回表示時などにも別途対策が必要です。 – (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component { _selectedLabel.font = [UIFont systemFontOfSize:15]; UILabel *label = (UILabel*)[pickerView viewForRow:row forComponent:component]; label.font = [UIFont systemFontOfSize:20]; _selectedLabel = label; // フォントサイズを戻すために保持 } 回答者: Anonymous

自作フレームワークをimportすると「No such module 〜」のエラーが表示される

投稿者: Anonymous 現在以下のサイトを参考に自作のフレームワークを使おうとしているのですが、フレームワークをimportすると、importの行で「No such module 〜」のエラーが表示されてしまいます。 そのまでの手順は以下のサイトに書かれてある通りに行いました。 [Xcode6] SwiftでCocoa Touch Frameworkを作る どうすれば自作のフレームワークを使用できるようになるでしょうか? どなたか解決できる方がいれば教えていただきたいです。宜しくお願いします。 解決 自己解決しました。 以下のサイトを参考にFramework Search Pathsを設定したところ、「No such module〜」のエラーが消えてビルドできるようになりました。 [ios][Xcode]framework search pathの指定 回答者: Anonymous

値に変化が起きたときの値を、コンソールにログを出力するには?

投稿者: Anonymous 現在、Buttonを押すと値を表示しています。 表示をButtonを押さずとも更新して表示し、その値をコンソールにログを出力するにはどうすればいいでしょうか? #import “ViewController.h” @interface ViewController () //アンテナバー @property (weak, nonatomic) IBOutlet UILabel *labelAntennaBar; //RSSI @property (weak, nonatomic) IBOutlet UILabel *labelRssi; @end @implementation ViewController – (void)viewDidLoad { [super viewDidLoad]; } – (IBAction)buttonGetValue:(id)sender { self.labelAntennaBar.text = [NSString stringWithFormat:@”%zd”, [self antennaBar]]; self.labelRssi.text = [NSString stringWithFormat:@”%zd”, [self radioRssi]]; } #pragma mark – Status bar – (NSInteger…(Continue Reading)

App Store事前登録受付の方法

投稿者: user15219 Super Mario Runのように事前登録を受け付ける設定は可能でしょうか? ストアでは下記のように配信の事前予告が行われています。 解決 Appleにdeveloperとして質問したところ、現在は限定的に特定のアプリケーションでのみ利用可能な機能ということでした。 追加情報です。 App Storeの上部にデザインを適用しているアプリがあると思いますが、これも同じく特定のアプリケーションでのみ利用可能な機能とのことでした。 回答者: user15219

objective-c の performSelector を使用したランダムなメソッドの呼び出しについて

投稿者: Anonymous performSelectorに、NSArrayで生成したランダムなメソッド(文字列)を代入し、そのメソッドに飛ばすにはどうすればよいでしょうか?下記のソースだとクラッシュします。 – (void)trigger:(id)sender{ NSArray *tone_array = [NSArray arrayWithObjects:@”method_1″,@”method_2″,@”method_3″,@”method_4″,nil]; uint32_t rnd = (int)arc4random_uniform((int)[tone_array count]); NSString *rndMethod = [tone_array objectAtIndex:rnd]; [self performSelector:@selector(rndMethod:) withObject:nil afterDelay:0];} – (void)method_1:(id)sender{ //処理するアクション } 解決 perfomSelectorの前にNSSelectorFromString(メソッド名文字列)を実行して、SEL型の変数に戻り値を代入して使います。 以下は、ボタンを押すと画面上のcalledMethodNameFieldと言う名前でIBOutletを繋いだlabelに呼ばれた文字列と同じ名前のメソッドを呼び出して、ラベルにメソッドの名前を表示してみせるサンプルです。 SEL currentSelector = NSSelectorFromString(currentMethodName); [self performSelector:currentSelector withObject:nil afterDelay:0.0]; 上の2行がキモになります。 – (IBAction)testButtonPressed:(NSButton *)sender { NSArray<NSString *> *selectorNames = @[@”method1:”, @”method2:”, @”method2:”, @”method3:”, @”method4:”]; NSUInteger rnd…(Continue Reading)

StoryboardのNavigation Barの存在理由

投稿者: Anonymous StoryboardでUIを配置していく時に、画面右下からNavigation Barを選択してViewControllerに配置してみるのですが、NavigationControllerのナビゲーションバーのようになりませんよね?ViewControllerの上に配置してもNavigationControllerのナビゲーションバーと縦のサイズが違いますし、それにNavigation Itemを引っ張ってきて配置してもNavigation Barには反映されません。このNavigation Barは一体何のためにあるのでしょうか?NavigationControllerのナビゲーションバーとは別物と考えたほうがいいでしょうか? 解決 Storyboardが登場してからは、ナビゲーションコントローラと中身のビューコントローラを一緒にInterface Builderで作ることができるようになったので、Navigation Barを単体で配置するのはレアケースだと思います。 使い方としては、ナビゲーションコントローラは必要ないけど、見た目を同じにしたいとか、上部にバーと閉じるボタンを配置したいとか、そういうときに使います。 特にStoryboardが登場する以前は、ビューに単体でNavigation Barを配置して、タイトルと左右にボタンを置いて、モーダルビューで表示する、といったときに簡単にInterface Builderだけで作れて便利とかそんな感じで使います。 似ている例を言うと、Search BarとSearch Display Controllerの関係とか。Search Display Controllerを使うほどじゃないけど、Search Barを置いて検索できるようにしたいというときはSearch Barだけ使う、のと同じです。 といったものなので、特に今までNavigation Barを使ったことがなくて、それで困っていないなら特に気にすることはありません。 ちなみに、ナビゲーションコントローラを使った場合と比べて高さが異なるというのは勘違いで、iOS 7からステータスバーと一体化した見た目になったのでそのように見えるだけで、ビゲーションコントローラを使ったときと同じ見た目にすることは可能です。 ビューコントローラにナビゲーションバーをステータスバーの高さだけ下げて設置して、デリゲートを接続して、そのデリゲートで下記のメソッドを実装します。 – (UIBarPosition)positionForBar:(id<UIBarPositioning>)bar { return UIBarPositionTopAttached; } ここでUIBarPositionTopAttachedを返すと、ステータスバーと一体化した見た目にしてくれます。 まとめると、今となっては単体で使うことはあまりないですが、必要ならナビゲーションコントローラを使わないときでも同様の見た目にしたり、ナビゲーションバーの機能を使うことができる、というためにあります。 回答者: Anonymous

複数チェックボックスでチェックがついてるものの値だけ加算する

投稿者: Anonymous flutterで複数チェックボックスでチェックがついてるものの値だけ加算したいのですが、どのようにすれば良いでしょうか。 valueに複数の型を組み込むことができればなんとかなりそうなのですが、、 現在のコードは以下です。 class CheckBox extends StatefulWidget { final int index; final int money; CheckBox({this.index, this.money}); @override _CheckBoxState createState() => _CheckBoxState(); } class _CheckBoxState extends State<CheckBox> { final List<List<String>> topping = [ ["大盛り","980"], ["たまご","180"], ]; bool _flag = false; int _prace = 0; void _handleCheckbox(bool e) { setState(() { _flag = e; if…(Continue Reading)

Swiftでメソッドの実装をiOSバージョンごとに分ける・無くす方法

投稿者: Anonymous お世話になります。 iOS10と9に対応したいアプリの通知処理を作っています。 iOS9ではフォアグラウンドのとき通知が表示されないので通知の受信を application(_ application: UIApplication, didReceive notification: UILocalNotification) を使って制御してバックグラウンドと同じような通知を表示しようとしています。 しかしこれはDeprecatedなメソッドだそうでiOS9のみで実装するようにしたいです。 @available(iOS 10.0より古い, *) といった感じの指定がしたいのですがそういった事はできるのでしょうか? 修正 現状はメソッドの中でバージョンを判定して処理を分けるようにしました。 func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) を実装している状態でiOS9ではフォアグラウンドで通知が来た時とバックグラウンドで通知表示を押して戻った時、 iOS10ではフォアグラウンド、バックグラウンド時の通知表示をタップした時、 func application(_ application: UIApplication, didReceive notification: UILocalNotification) が呼ばれ、これはiOS9でしか使う予定がないのでこの下のメソッドをiOS10より前でのみこの内容で実装するということは出来ないでしょうか? 解決 こんな指定ができます。 @available(iOS, deprecated: 10.0) func application(_ application: UIApplication, didReceive notification: UILocalNotification) {…(Continue Reading)

Swiftのタイプオブジェクトから、動的にイニシャライザを呼ぶ方法

投稿者: Anonymous Swiftの列挙型がCountを返してくれないので、グローバル関数でループを回して数えるようなことを考えています。 protocol CountableIntEnum { init?(rawValue: Int) } func enumCount(CountableEnumType: CountableIntEnum.Type) -> Int { var count = 0 while CountableEnumType(rawValue: count) != nil { count++ } return count } enum Podium: Int, CountableIntEnum { case First = 0 case Second case Third static let count = enumCount(Podium) } println(Podium.count) 上記のようなコードを記述すると、コーディング中は問題ないのですが ビルド時に Command failed due…(Continue Reading)