3

チャット アプリケーションにJSQMessagesViewControllerを使用しています。インターネット アクティビティがない場合、inputToolbar を非表示にしたい

私はこれを試しましたが、うまくいきません:

    self.inputToolbar.frame.size = CGSize(width: 0,height: 0)

これを設定すると、1 秒も経たないうちに消えてしまいます。

    self.inputToolbar.preferredDefaultHeight = 0

これを行う方法はありますか?たぶん、inputToolbar を無効にするだけでも十分です。

4

3 に答える 3

4

副作用のないより良い解決策を見つけました。JSQMessagesViewControllerの子孫
クラスで アクションを作成できます。

1.ベース クラスのこのメソッドを使用できるようにします。

@interface JSQMessagesViewController ()
- (void)jsq_setCollectionViewInsetsTopValue:(CGFloat)top 
                                bottomValue:(CGFloat)bottom;
@end

2.メソッドの親実現をオーバーライドします (サイズが変更されたときに呼び出されます)。

- (void)jsq_updateCollectionViewInsets {
    CGFloat topInset = self.topLayoutGuide.length + self.topContentAdditionalInset;
    CGFloat bottomInset = 0.0;
    [self jsq_setCollectionViewInsetsTopValue:topInset bottomValue:bottomInset];
}

3.入力ツールバーを永久に非表示にするメソッドを記述します。

- (void)hideInputToolbar {
    self.inputToolbar.hidden = YES;
    [self jsq_updateCollectionViewInsets];
}

4.お楽しみください!

于 2015-07-22T15:07:22.647 に答える
0

これが機能することが判明しました:

override func viewDidLoad() {
    super.viewDidLoad()
    self.inputToolbar.removeFromSuperview()
}
于 2015-04-24T17:09:02.677 に答える