キーボードの上のこういうやつが簡単に付けられるライブラリ。
サンプルコードよりアクセサリ追加のコード。まずインスタンスを作ってテキストビューへ追加する。
// Create the Quayboard bar JSMQuayboardBar *textViewAccessory = [[JSMQuayboardBar alloc] initWithFrame:CGRectZero]; textViewAccessory.delegate = self; self.textView.inputAccessoryView = textViewAccessory;
次に表示したいキーボードの文字を登録する。
// Add some keys whose values match their labels [textViewAccessory addKeyWithValue:@"1"]; [textViewAccessory addKeyWithValue:@"2"]; [textViewAccessory addKeyWithValue:@"3"]; [textViewAccessory addKeyWithValue:@"4"]; [textViewAccessory addKeyWithValue:@"5"]; // Maybe a key whose labels and values aren't the same [textViewAccessory addKeyWithTitle:@"⇥" andValue:@"\t"];
最後にキーボード関連の通知に追加。
// Deal with events and changes [NSNotificationCenter.defaultCenter addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil]; [NSNotificationCenter.defaultCenter addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
デモの右にあるようなカスタムキーの作り方。
// Or build and add a custom key JSMQuayboardButton *customKey = [[JSMQuayboardButton alloc] initWithFrame:CGRectZero]; customKey.title = @"▾"; [customKey addTarget:self action:@selector(clearTextView:) forControlEvents:UIControlEventTouchUpInside]; [textViewAccessory addKey:customKey];
キーボードイベントはデリゲートで受け取れる。
@protocol JSMQuayboardBarDelegate <NSObject> @optional - (void)quayboardBar:(JSMQuayboardBar *)quayboardBar keyWasPressed:(JSMQuayboardButton *)key; @end
簡単なのがいい。使えそう。
(追記)日本語キーボードだと候補表示の時にテキストビューが消えてしまった。一工夫必要?