ZYKeyboardUtilはキーボードでの入力をカバーしてくれるようになりました.

2835 ワード

Demo住所:https://github.com/liuzhiyi1992/ZYKeyboardUtil 私のブログの原文:http://zyden.vicp.cc/zykeyboardutil/転載を歓迎します.出所を明記してください.ありがとうございます.
キーボードは入力コントロールやボタンを隠します.日常のアプリの開発では間に合わないので、様々な状況を考慮してUIの様々な入れ子が作られています.最後に、傍受を登録して指定のキーボード情報を取得します.キーボード処理ツール類のZYKeyboardUtilを通じて、複雑さを避けることができます.Blockを利用して、キーボードで問題を覆い隠すことができます.
主な対応:
  • 横向きスクリーンキーボードが入力コントロールを遮る問題
  • サードパーティキーボードが複数回起動するピット
  • ビュー多層ネスト内入力コントロール処理
  • 単一ページ内の複数の入力コントロール処理
  • ZYKeyboardUtilはLazy方式でキーボードを登録して傍受者に通知し、一つのBlockは全部自動的にキーボード遮蔽イベント(処理/回復)を処理し、また二つのカスタム動作Blockを付属して使用者自身で処理する.内部クラスKeyboardInfoは、各処理に必要なキーボード情報をmodelとして記憶している.
    animewhenKeybodUtilを設定すると、キーボードの入力コントロールを遮断する問題が発生します.付属のカスタム動作Blockでは、animateWhenKeyboardApparBlockがキーボード展示時の処理として、animateWhenKeyboardDispar Blockがキーボードを閉じる時の処理として、print Keyboard InfoBlockが必要な時にキーボード情報を出力するために使用されます.Apple BlockとDisplapearBlockはUID View Animationに統一的に加入しています.使う時は必要なインターフェースの変化を編纂するだけでいいです.
    縦横スクリーンテスト:
    縦横スクリーンテスト
    入力コントロールの多層ネスト:
    入力コントロール多層ネスト
    サードパーティのキーボードはサブポップアップの問題に分けられます.
    サードパーティのキーボードはサブポップアップの問題です.
    どう使いますか
    我々のcontrollerでは、ZYKeyboardオブジェクトを作成し、ページ全体で機能を実現する時間帯に存在させるために、彼を保持してください.
    self.keyboardUtil = [[ZYKeyboardUtil alloc] init];
    
    キーボードイベントの処理:
    animateWhenKeyboardApparAutomatic AnimBlockを設定すれば、キーボードの昇降によって入力コントロールの問題を遮り、コントロールのreign First Resonterが自動的に元に戻ります.BlockでパラメータkeyboardUtilを利用してadapptiveView HandleWithControllerを呼び出すだけで、最初のパラメータは現在のページcontrolerで、二つ目のパラメータは可変パラメータを受信し、現在のページ内の単一/複数の入力コントロールまたは入力コントロールを包むViewです.
    __weak ViewController *weakSelf = self;
    [_keyboardUtil setAnimateWhenKeyboardAppearAutomaticAnimBlock:^(ZYKeyboardUtil *keyboardUtil) {
        [keyboardUtil adaptiveViewHandleWithController:weakSelf adaptiveView:weakSelf.inputViewOne, weakSelf.inputViewSecond, weakSelf.inputViewThird, weakSelf.inputViewFourth, nil];
    }];
    
    以下は追加のカスタム動作ブロックです.
    //    
    [_keyboardUtil setAnimateWhenKeyboardAppearBlock:^(int appearPostIndex, CGRect keyboardRect, CGFloat keyboardHeight, CGFloat keyboardHeightIncrement) {
        //do something when keyboard appear
    }];
    
    apparPostIndexは、キーボードがサブ展開されている時(サードパーティキーボードはサブ展開されます)に、現在同じ展開の何回目の上昇を記録します.今回展開されたキーボード位置のRectです.keyboard Heightは今回の展開後のキーボードの高さです.keyboard Height Incrementは今回展開するキーボードの増分です.(サードパーティキーボードのサブ展開に対応するキー)
    //    
    [_keyboardUtil setAnimateWhenKeyboardDisappearBlock:^(CGFloat keyboardHeight) {
        //do something to restor UI when keyboard dismiss
    }];
    
    keyboard Heightはキーボードが閉じる前の高さです.
    //      
    [_keyboardUtil setPrintKeyboardInfoBlock:^(ZYKeyboardUtil *keyboardUtil, KeyboardInfo *keyboardInfo) {
        //you can get keyboardInfo here when animation ended
    }];
    
    このBlockのパラメータではキーボード情報keyboardInfoが得られます.
    忘れないように注意してください.weakSelfによってBlockの循環を回避します.weak View Controller*weakSelf=self;