我用工具栏创建了一个情节提要。另外,我创建了一个UICollectionViewCell / XIB并将其导入情节提要中。我在UICollectionViewCell内添加了许多UITextField。什么时候
我选择屏幕底部的UITextField,屏幕不会滚动以显示它。您能给我一些解决方法的建议吗?
最佳答案
您的像元高度是动态的还是固定的?如果它是固定的,则可以使用一个技巧,例如,一旦文本字段变为活动状态,使用一些delegate
或didSelectItemAt
检测选定的单元格,然后将该单元格的indexPath.row与cellHeight属性相乘,然后设置contentOffset
collectionView
的值,例如:
// cellHeight property is something you should have declared somewhere.
collectionView.setContentOffset(CGPoint(x: 0.0, y: cellHeight * indexPath.row), animated: true)
如果上述解决方案不起作用,请以编程方式获取keyboardHeight,或者设置一个足以使您向上滚动的值,例如,我将其设置为200,然后获取currentOffset,将您的值添加到currentOffset的y值中在
didSelectItemAt
方法中,(仅供参考):let currentOffSet = collectionView.contentOffset
let newOffset = CGPoint(x: 0.0, y: currentOffSet.y + 200.0)
collectionView.setContentOffset(newOffset, animated: true)
根据您的应用程序,这可能是更好的解决方案。但是请记住将offSet设置回原始值,也许使用textField的
resignFirstResponder
方法,所以每次用户点击一个单元格时都不会出现怪异的行为。