【问题标题】:Swift -How to Paginate when Swiping DownSwift - 向下滑动时如何分页
【发布时间】:2019-08-21 20:43:19
【问题描述】:

加载帖子时,最新的帖子通常位于屏幕顶部,当用户向上滑动时,一旦滚动视图到达屏幕底部,显示的旧帖子使用此方法

func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {

    let contentOffset = scrollView.contentOffset.y

    let maximumOffset = scrollView.contentSize.height - scrollView.frame.size.height

    if maximumOffset - contentOffset <= 40 {

        handlePagination()
    }
}

但在加载消息时,情况正好相反。最新消息位于屏幕底部,当用户 向下滑动 时,当 scrollView 到达屏幕顶部时,会显示较旧的消息。

有两种情况需要考虑:

1- 通常在屏幕底部有一个 textField 或一个带有 sendButton 的 textView。如果用户没有触摸 textField/ 或 textView,他们只需向下滑动,一旦 scrollView 到达屏幕顶部,handlePagination() 将被调用以显示旧消息

2- 如果用户触摸 textView/Field,键盘会被抬起,即使他们在 textView/Field 中输入了一些文本,他们仍然可以向下滑动以查看旧消息

问题是

1.如何检测用户何时向下滚动,以便在 scrollView 到达屏幕顶部时调用 handlePaginate()

2。抬起时是否需要考虑键盘的高度?

我可以使用键盘通知来检测键盘何时抬起或未抬起,并简单地将属性切换到键盘的高度。

var keyboardHeight: CGFloat = 0.0

@objc fileprivate func keyboardWillShow(notification: Notification) {

    guard let keyboardDuration = notification.userInfo?[UIResponder.keyboardAnimationDurationUserInfoKey] as? Double else { return }
    guard let keyboardFrame: NSValue = notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue else { return }

    let keyboardRectangle = keyboardFrame.cgRectValue
    keyboardHeight = keyboardRectangle.height
}

@objc fileprivate func keyboardWillHide(notification: Notification) {

    keyboardHeight = 0.0
}

【问题讨论】:

    标签: ios swift pagination keyboard scrollview


    【解决方案1】:

    似乎我只需要检查 contentOffset 是否小于或等于 50

    if contentOffset <= -40 {
        handlePagination()
    }
    

    当键盘被抬起和没有被抬起时它工作。

    func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
    
        let contentOffset = scrollView.contentOffset.y
    
        if contentOffset <= -40 {
            handlePagination()
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2022-01-10
      • 2012-08-13
      • 1970-01-01
      • 1970-01-01
      • 2018-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-21
      相关资源
      最近更新 更多