首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DGElasticPullToRefresh -由于信号:分段故障: 11,命令失败

DGElasticPullToRefresh -由于信号:分段故障: 11,命令失败
EN

Stack Overflow用户
提问于 2018-05-28 16:51:01
回答 1查看 71关注 0票数 0

通过Pod导入DGElasticPullToRefresh库之后,我的编译器崩溃了。它是由DGElasticPullToRefreshView.swift的这个函数引起的:

代码语言:javascript
复制
 override open func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
    if keyPath == DGElasticPullToRefreshConstants.KeyPaths.ContentOffset {
        if let newContentOffset = change?[NSKeyValueChangeKey.newKey], let scrollView = scrollView() {
            let newContentOffsetY = (newContentOffset as AnyObject).cgPointValue.y
            if state.isAnyOf([.loading, .animatingToStopped]) && newContentOffsetY < -scrollView.contentInset.top {
                scrollView.contentOffset.y = -scrollView.contentInset.top
            } else {
                scrollViewDidChangeContentOffset(dragging: scrollView.isDragging)
            }
            layoutSubviews()
        }
    } else if keyPath == DGElasticPullToRefreshConstants.KeyPaths.ContentInset {
        if let newContentInset = change?[NSKeyValueChangeKey.newKey] {
            let newContentInsetTop = (newContentInset as AnyObject).uiEdgeInsetsValue.top
            originalContentInsetTop = newContentInsetTop
        }
    } else if keyPath == DGElasticPullToRefreshConstants.KeyPaths.Frame {
        layoutSubviews()
    } else if keyPath == DGElasticPullToRefreshConstants.KeyPaths.PanGestureRecognizerState {
        if let gestureState = scrollView()?.panGestureRecognizer.state, gestureState.dg_isAnyOf([.ended, .cancelled, .failed]) {
            scrollViewDidChangeContentOffset(dragging: false)
        }
    }
}

根据这篇文章:https://stackoverflow.com/a/41043678/6003494我可以识别出导致错误的行。在第二个if子句中有下面这一行:

代码语言:javascript
复制
let newContentInsetTop = (newContentInset as AnyObject).uiEdgeInsetsValue.top

有谁知道怎么解决这个问题吗?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2018-05-28 18:59:13

我可以在两个小时的测试后修复它:我不得不冒险将类型转换为NSValue:

从这个开始:

代码语言:javascript
复制
let newContentInsetTop = (newContentInset as AnyObject).uiEdgeInsetsValue.top

要这样做:

代码语言:javascript
复制
let newContentInsetTop = (newContentInset as! NSValue).uiEdgeInsetsValue.top
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50562467

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档