3

我正在为我的聊天应用程序使用JSQMessagesViewController 。当没有互联网活动时,我想隐藏 inputToolbar

我试过这个,但这不起作用:

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

当我设置它时,不到一秒钟它就消失了:

    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 回答
3

而不是从超级视图中删除并不得不作为子视图添加回来,为什么不直接使用:

[self.inputToolbar setHidden:YES];

于 2015-05-04T01:20:27.220 回答
0

事实证明,这将起作用:

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