我目前在IB中设置了UICollectionView
,如下所示:
当键盘出现时,底部约束使其常量更改为键盘的高度:
func keyboardWillShow(notification: NSNotification) {
let keyboardHeight = getKeyboardHeight(notification)
keyboardHeightConstraint.constant = keyboardHeight + 20
print(cardCollectionView.frame)
self.cardCollectionView.configureCollectionView()
self.cardCollectionView.reloadInputViews()
}
configureCollectionView()
的位置:
func configureCollectionView() {
self.backgroundColor = UIColor.clearColor()
// Create the layout
let space = 10.0 as CGFloat
let flowLayout = UICollectionViewFlowLayout()
let width = (self.frame.size.width) - 4 * space
let height = (self.frame.size.height)
let edgeInsets = UIEdgeInsetsMake(0, 2 * space, 0, 2 * space)
// Set top and bottom margins if scrolling horizontally, left and right margins if scrolling vertically
flowLayout.minimumLineSpacing = space
flowLayout.minimumInteritemSpacing = 0
// Set horizontal scrolling
flowLayout.scrollDirection = .Horizontal
// Set edge insets
flowLayout.sectionInset = edgeInsets
flowLayout.itemSize = CGSizeMake(width, height)
self.setCollectionViewLayout(flowLayout, animated: true)
// Always allow it to scroll
self.alwaysBounceHorizontal = true
}
当键盘首次出现时,CollectionView
会调整大小,然后调用configureCollectionView()
。因此,CollectionViewCell
也应该调整大小,但它看起来像是被调整大小的CollectionView
的边界剪切。
这可以看作是GIF中的第二张图像(键盘出现后)底部没有圆角,4个按钮就在那里。
似乎当我点击另一个TextView
时,CollectionViewCell
会恢复到正确的大小,尽管它仍然有一个alpha = 1
,即使我的代码中没有任何地方也设置了alpha
1}}到一个。
为了得到我最后想要的结果,我不得不关掉键盘。
我的实现有什么问题,在显示键盘而不必完成上述所有操作时,我可以做些什么来达到我想要的效果?