[Swift] iPadOS用アプリにキーボードショートカットを追加する
iPadOSではキーボードやポインティングデバイス(マウスやトラックパッドなど)がサポートされています。キーボードサポートでは入力のためだけでなく、アプリごとのキーボードショートカットもサポートされています。今回はそんなiPadOS用アプリへのキーボードショートカットの実装について。
iPadOSではキーボードやポインティングデバイス(マウスやトラックパッドなど)がサポートされています。キーボードサポートでは入力のためだけでなく、アプリごとのキーボードショートカットもサポートされています。今回はそんなiPadOS用アプリへのキーボードショートカットの実装について。
macOSやiOSのアプリ開発で、MacにインストールされているSwiftや、プロジェクトに設定しているSwiftのバージョンを確認したいときがあります。
プロジェクトで使用しているSwiftのバージョンを確認するには、XcodeのTARGETSで「Build Settings
」 - 「Swift Compiler - Language
」 - 「Swift Language Version
」を確認します。
macOS 13から利用できるMenuBarExtraを使用してSwiftUIでメニューバーに常駐するアプリを作ってみます。
Swift Playground が Project Catalyst のおかげで Mac 版となって登場したので試してみました。それが下のスクリーンショット。
ニコニコログの開発の中ではタイムラインの更新機能のために "PullToRefresh.js" を利用しています。また、iOS版のニコニコログも基本的には TAppKit をベースに開発しているため、表示部分の多くは WKWebView を使用しています。
ニコニコログ開発の記録の連載記事の初期にも書いている通り、
以下のコードは CoffeeScript ですが、JavaScript や TypeScript の場合は便宜置き換えてみてください。
PullToRefresh.init({
mainElement: SELECTOR
onRefresh: ->
if window.webkit isnt undefined
window.webkit.messageHandlers.callbackHandler.postMessage('runHapticTouchSuccess')
})
window.webkit.messageHandlers.callbackHandler.postMessage('runHapticTouchSuccess')
の部分で、WKWebView 側に通知を送ります。
最近 Swift やってます。すごく楽しいです。
さて。
Interface Builder・・・って今は呼ぶのかわからないけど、そこで設定できない UI の制御用のコードを viewDidLoad とかにいっぱい書くのが嫌になって調べたら、@IBInspectable というのを使うといろいろできることがわかったのでメモ。
extension UIView {
@IBInspectable
var cornerRadius: CGFloat {
get {
return self.layer.cornerRadius
}
set(radius) {
self.layer.cornerRadius = radius
}
}
}
今回のサンプルは UIView の角丸設定を追加してみた。
KVOはObjective-Cではときどき使っていましたが、Swiftでは使ったことがなかったので試してみます。
KVOは変数の値の変化を監視する仕組みです。
ViewControllerにボタンを配置して、ボタンを押した時に変数の値を変えて動作確認しました。