当键盘出现时 CollectionView 向上移动然后返回到之前的位置

Posted

技术标签:

【中文标题】当键盘出现时 CollectionView 向上移动然后返回到之前的位置【英文标题】:CollectionView moves up when keyboard appears then returns to previous position 【发布时间】:2018-10-15 20:09:07 【问题描述】:

我在其单元格中有一个 collectionView 和一个 textView。何时出现 textView 键盘但随后 collectionView 向上移动然后返回到先前位置。如何阻止它?出现键盘时如何停止移动collectionView?

这是我简单明了的代码:

 class MainReadAssistantViewController: UICollectionViewController, 
UICollectionViewDelegateFlowLayout 
let wordOrPhraseCellId = "wordOrPhraseCellId"

override func viewDidLoad() 
    super.viewDidLoad()
    NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow), name: NSNotification.Name.UIKeyboardWillShow, object: nil)
   collectionView?.backgroundColor = UIColor.blue
collectionView?.register(WordOrPhraseCell.self, forCellWithReuseIdentifier: wordOrPhraseCellId)

    collectionView?.register(SentenceOrASuperLongPhrase.self, forCellWithReuseIdentifier: sentenceOrASuperLongPhraseCellId)
    collectionView?.isScrollEnabled = false

   // collectionView?.alwaysBounceVertical = true
     

override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int 
    return 1



func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize 


    return CGSize(width: view.frame.width, height: view.frame.height - 150)


override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell 
    var cell = collectionView.dequeueReusableCell(withReuseIdentifier: 
        return cell

        
    


    return cell

这是键盘出现后 uicollectionView 移动的示例。

【问题讨论】:

【参考方案1】:

这是为了防止键盘隐藏文本字段。如果您想停止这种行为(我不建议这样做)覆盖 viewWillAppear(_:) 而不调用 super.viewWillAppear(animated)。像这样:

override func viewWillAppear(_ animated: Bool) 


请注意,在不调用 super 方法的情况下覆盖 viewWillAppear(_:) 可能会导致未定义的行为。

【讨论】:

以上是关于当键盘出现时 CollectionView 向上移动然后返回到之前的位置的主要内容,如果未能解决你的问题,请参考以下文章

出现软键盘时工具栏向上移动

当使用 Swift 出现键盘时如何向上移动 UIViewController 的内容

当键盘出现iOS时向上滚动tableview行

当键盘出现并启用滚动时,TextField 向上移动

当键盘出现Swift时,使用文本字段和按钮向上移动视图

当用户单击 UIWebView 内的文本字段时,出现键盘后屏幕不会向上移动