Monthly Archives: May 2016

Swift: WebView を縦スワイプに反応しないよう固定する方法(バウンス無効)

標準ブラウザでは縦方向に長いページをスワイプし、最上段、最下段に到達した時にバウンスする仕様になっていますが、この挙動を望まない場面があります。 アプリに WebView を使用し、プルリフレッシュを実装した際にこのバウンスのせいで、ページ内をプルしたつもりが、WebView 全体が動いてしまうことがあります。 今回はこの WebView 全体を縦方向に動かなくする方法を紹介します。 目次 WebView(画面全体)が縦方向のスワイプに反応しないようにする まとめ WebView(画面全体)が縦方向のスワイプに反応しないようにする WebView には scrollView.bounce と言うプロパティがあり、これが縦方向に画面が動く(バウンスする)かどうかを許可する値です。 この値を false にすることで、スワイプによる画面全体のバウンスが無効になります。 Swift まとめ 今回紹介した方法は、冒頭で説明したように WebView でプルリフレッシュが実装されたアプリ 以外に使い道はない気がするので、そういえばこういうのもあったな、といった程度に覚えておけばいいのではないでしょうか。 この記事がみなさんのお役に立ちましたら、下記「Share it」よりブックマークやSNSで共有していただければ幸いです。

Swift: Web (JavaScript) から SKWebView へメッセージを送信する

iOS 8 で登場した SKWebView は JavaScript の実行が速く、UIWebView に欲しかった機能がデフォルトで実装されていて非常に強力です。 iOS もバージョンが 9.X となり、SKWebView もそろそろ市民権を得ている頃なので、これからアプリに WebView を実装する場合は WKWebView でいいかもしれません。 今回はその SKWebView で表示している Web 側から、JavaScript で ネイティブへメッセージを送信する方法を説明したいと思います。 目次 WKWebView の準備 JavaScript から SKWebView へメッセージを送信する まとめ WKWebView の準備 ViewController の WKWebView でメッセージを受信するための準備を行います。 ViewController.swift まず最初に ViewController へ WebKitFramework をインポートします。 次に ViewController へ WKWebView のデリゲート WKScriptMessageHandler と userContentController メソッドを追加し、 viewDidLoad で WKWebView を作成します。 これでネイティブ側の準備は完了です。 JavaScript から SKWebView へメッセージを送信する ここからメッセージ送信の実装となりますが、JavaScript と Swift に分けて説明したいと思います。 JavaScript (Web側) メッセージ送信を行うトリガーとなる Web側のイベントで 以下の JavaScript を実行します。 Swift (ネイティブ側) ViewController に準備しておいた userContentController に以下のような判定を入れれば、ハンドラ名やメッセージの内容で処理を切り替えることができます。 結果 WKWebView で Web サイトを開き 上記 window.webkit.messageHandlers イベントが実行される対象をタップすると、ログが出力されます。 まとめ 上記のように WKWebView を使用すれば、 Web からのメッセージ送信が簡単に行えましたが、他にも UIWebView に比べクラッシュ率が低下、JavaScript の処理が大幅に改善されているといったメリットがあります。 UIWebView の接続先は、他の通信関連 API で操作することが可能なため、セキュリティ的に問題があります。今後特に UIWebView でなければいけない理由がない限り WKWebView を使用することをお勧めします。 この記事がみなさんのお役に立ちましたら、下記「Share it」よりブックマークやSNSで共有していただければ幸いです。

Swift: status bar のスタイルを変更する(iOS 9対応)

以前、iOS アプリの上端に表示される ステータスバーを非表示にする方法 を説明しました。 今回、開発中のアプリでステータスバーを表示し、スタイルを変更する必要があったので、ステータスバーを表示する際のスタイルの変更方法をメモしておきたいと思います。 目次 status bar スタイルの変更方法 まとめ status bar スタイルの変更方法 ViewController ごとにスタイルを設定する方法と、AppDelegate で一括して定義する方法があります。 複雑な画面デザインや構成でなければ、AppDelegate で設定してもいいかもしれません。 ViewController に定義 ViewController で preferredStatusBarStyle() をオーバーライドすれば、ViewController ごとに status bar のスタイルを定義することができます。 AppDelegate で定義 開発環境が Xcode7、アプリの対応 OS が iOS 9.x 以降であれば、AppDelegate の func application() にスタイルを記述することで、アプリ起動時に一括して定義することが可能です。 まとめ これまでステータスバーは常に非表示にしてきたため、ステータスバーのスタイルを表示し変更する必要が出た際にやり方が分からなかったため、今回その方法をメモしました。 ゲームやツールアプリでは非表示のものが多いですが、WebView を使用したニュースアプリや、SNS アプリはステータスバーを表示しているものが多く見受けられます。 ステータスバーを表示すべきか否かは、開発するアプリが時間、バッテリー残量、電波等を気にしなければならないようなアプリであれば表示、機能そのものがネイティブで完結するようなアプリなら非表示でいいかと思います。 この記事がみなさんのお役に立ちましたら、下記「Share it」よりブックマークやSNSで共有していただければ幸いです。

Mac: Bluetooth 接続していないデバイスを一覧から削除する方法

Bluetooth メニューの一覧には過去に接続したものの、現在全く使用しなくなったデバイスが、いつまでも一覧に表示されています。 そのまま放置しても全く問題はないのですが、気になる方もいるかと思います。 今回はこの Bluetooth のデバイス一覧から使用しなくなったデバイスを削除する方法をメモしておきます。 目次 Bluetooth デバイスを一覧から削除する まとめ Bluetooth デバイスを一覧から削除する リストから iPad Air 2 を削除してみたいと思います。 メニューバー > Bluetoothアイコン(※) を オプションキーを押しながらクリック 削除したいデバイス(iPad Air 2) > 「削除」 をクリック 無事、一覧から選択したデバイスが削除されました (※)システム環境設定 > Bluetooth > メニューバーに Bluetooth を表示 にチェックを入れると表示されます。 まとめ オプションキーを使ったメニューへのアクセスは他にも存在しますが、この操作方法を覚えていない限り、なかなか直感的に使用する機会はないかと思います。 今回紹介した方法以外にも、Mac OS X や Apple の標準アプリにはオプションキーを使ったメニューアクセスで解決する問題が数多くあります。 しかし、すべてのオプションキーのコンビネーションを覚えるのは困難なので、通常の操作ではない命令を実行したい時は、とりあえずオプションキーを押しながらメニューを開く、と覚えておけばいいかもしれません。 この記事がみなさんのお役に立ちましたら、下記「Share it」よりブックマークやSNSで共有していただければ幸いです。