- Xcode6.4
概要
自前でテキストエディタのようなものを実装したアプリがありまして、iOS9で動作させるとキーボードの上の方に何やらボタン(ショートカットバー?)が増えていて、これを一体どうやったらアプリで押せるようになるのかを調べたので適当に残しておきます。
Paste
canPerformAction
で固定のアクションに対する問い合わせが来るので、それに応答すれば良さそう。
override func canPerformAction(action: Selector, withSender sender: AnyObject?) -> Bool {
if action == "paste:" {
return true
}
return false
}
override func paste(sender: AnyObject?) {
println("paste called!!")
}
※どこかでpaste:
って文字定義されてないですかね...
同様に、cut:
, copy:
, toggleBoldface:
, toggleItalics:
, toggleUnderline:
という問い合わせも来るので、切り取りやコピーなどもここで実装すれば良さそうです。
(選択範囲が有ると切り取りなどのボタンが出るため)
Undo/Redo
で、canPerformAction
系ではUndo/Redoの問い合わせが来ません...
こちらは
override var undoManager: NSUndoManager? { return hogehoge }
というように、NSUndoManager
のインスタンスの要求に応えてあげれば良さそうです。
私はアンドゥ/リドゥ処理にNSUndoManager
を使っていないので、アダプター的な感じでNSUndoManager
をオーバーライドしようと考えています。
class TestUndoManager : NSUndoManager {
override var canUndo: Bool { return true }
override var canRedo: Bool { return true }
override func undo() {
println("undo called!!")
}
override func redo() {
println("redo called!!")
}
}
終わりに
とりあえず調べただけで、まだ実装はしていないので、何かお釣りが出るような事があったらすみません。
暫定的なiOS9対応はこんなところかな...