ツールバーのスワイプでキーボードを出し入れする

投稿者: | 2012/05/10

キーボードを手元の操作で出し入れしたいときに

ツールバーをちょいと上にスワイプするとキーボード出現。
ちゃッと下にスワイプするとキーボード収納。

ちなみに、この記事ではツールバーを使っていますが、
スワイプ検知を関連付けるのはツールバーじゃなくてもOKです。

 

1.スワイプ時に呼び出すメソッドを定義

スワイプ時に呼び出すメソッドを定義します。

(今回は単にUISearchBar にフォーカスをあてたり外したりするだけ。)

// 上方向スワイプ時の処理
- (void)swipeUpKeyboard:(id)sender {
    [self.searchBar becomeFirstResponder]; // 例)サーチバーにフォーカス
}

// 下方向スワイプ時の処理
- (void)swipeDownKeyboard:(id)sender {
    [self.searchBar resignFirstResponder]; // 例)サーチバーのフォーカスを外す
}

 

2.スワイプ方向に応じて処理を指定

viewDidLoad でツールバーにスワイプ方向に応じて処理の呼び出しを設定。

- (void)viewDidLoad {
    [super viewDidLoad];
    
    // ツールバー上スワイプ
    UISwipeGestureRecognizer* toUpSwipeGesture = 
        [[UISwipeGestureRecognizer alloc] 
         initWithTarget:self 
         action:@selector(swipeUpKeyboard:)]; // 上スワイプ時処理を呼び出し
    toUpSwipeGesture.direction = UISwipeGestureRecognizerDirectionUp;
    [self.toolBar addGestureRecognizer:toUpSwipeGesture];
    
    // ツールバー下スワイプ
    UISwipeGestureRecognizer* toDownSwipeGesture = 
        [[UISwipeGestureRecognizer alloc] 
         initWithTarget:self 
         action:@selector(swipeDownKeyboard:)]; // 下スワイプ時処理を呼び出し
    toDownSwipeGesture.direction = UISwipeGestureRecognizerDirectionDown;
    [self.toolBar addGestureRecognizer:toDownSwipeGesture];
}

 

3.キーボードの表示/収納を検知させる

ツールバーの位置はキーボードのタイプに応じて変わります。

viewWillAppear にNSNotificationCenter を設置。

キーボードの表示/収納を検知させて、ツールバーの位置を調整。

詳細は以下の過去記事を参照のこと。

【参考】

UIKeyboardDidHideNortification でキーボードの高さを取得しても、高さはゼロではない。 | 極上の人生

 

ちなみにTwitter での会話がきっかけ

とても便利に使わせて頂いているQuicka のアップデートがありまして。

その際にQuicka の作者@rakuishi07 さんとした会話が今回の記事のきっかけです。

「たしかモレスキンに書いていたな…」と。 *01ちなみに私はこれを@frnk さんと@isloop さんのやりとりから知りました。

 
Quicka 1.2(¥85)App
カテゴリ: 仕事効率化, ユーティリティ
販売元: rakuishi – KOICHIRO OCHIISHI(サイズ: 0.1 MB)
全てのバージョンの評価: (34件の評価)


 
FastEver – 素早く簡単にEvernoteにメモ 1.9.4(¥85)App
カテゴリ: 仕事効率化, ユーティリティ
販売元: rakko entertainment – rakko entertainment(サイズ: 1.3 MB)
全てのバージョンの評価: (1,457件の評価)

 


脚注   [ + ]

01. ちなみに私はこれを@frnk さんと@isloop さんのやりとりから知りました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です