小编Noo*_*dew的帖子

UIScrollView 的右锚不适用

我有一个UIViewController? SingleEventController显示事件。因为它有动态信息要显示,所以我选择创建一个新类UIScrollView EventScrollView。我试图基于这个很好解释的答案来意识到这一点 我尝试应用纯自动布局方法:在其中创建另一个UIView contentView,其中包含所有信息并锚定到 scrollView 的所有四个锚点。

scrollView 的 contentSize 是在 SingleEventController 的viewDidLayoutSubviews函数中确定的。

我的挣扎是,rightAnchor 似乎有问题。所有的信息元素都超过了视图的边界,较大的自动换行UILabels不起作用,并且在正确的锚点处布置的每个项目都消失了。(例如,作为 contentView 子视图的UITableView nopePeopleTV 中的用户名。)

这看起来像这样: 问题图像


SingleEventController中的代码:

view.addSubview(scrollView)
scrollView.anchor(top: view.topAnchor, left: view.leftAnchor, bottom: buttonViewDividerView.topAnchor, right: view.rightAnchor, paddingTop: 0, paddingLeft: 0, paddingBottom: 0, paddingRight: 0, width: 0, height: 0)

override func viewDidLayoutSubviews() {
    let heightOfAllObjects = scrollView.calculateHeightOfAllObjects()
    scrollView.contentSize = CGSize(width: self.view.frame.width, height: heightOfAllObjects + scrollView.heightOfAllPaddings)
}
Run Code Online (Sandbox Code Playgroud)

EventScrollView 中的代码:

addSubview(contentView) …
Run Code Online (Sandbox Code Playgroud)

constraints uiscrollview ios autolayout swift

3
推荐指数
1
解决办法
904
查看次数

如何修复 Alamofire 5 错误:“无法专门化非通用类型‘DataResponseSerializer’”?

我正在将网络基础更新到 Swift(和 Alamofire)第 5 版。

应该提供“通用响应对象序列化”的一种方法是抛出错误

不能专门化非泛型类型“DataResponseSerializer”

我认为在 Alamofire 5 中,他们使 Type 变得DataResponseSerializer非通用。任何想法如何在最新版本中实现相同的行为?不幸的是,我对 Alamofire 和Generics.

public extension Alamofire.DataRequest {

  @discardableResult
  func responseDecodableObject<T: Decodable>(completionHandler: @escaping (DataResponse<T>) -> Void) -> Self {

    //error is thrown here
    let responseSerializer = DataResponseSerializer<T> { request, response, data, error in

        guard error == nil else { return .failure(error!) }

        let result = DataRequest.jsonResponseSerializer(options: .allowFragments).serializeResponse(request, response, data, error)

        switch result {
        case .success(let value):
            do {
               let data = try JSONSerialization.data(withJSONObject: value, options: …
Run Code Online (Sandbox Code Playgroud)

generics ios swift alamofire swift5

3
推荐指数
1
解决办法
2227
查看次数

滚动视图中的手势识别器不起作用

我将所有 UIElement 移动到滚动视图中以避免加载 UIViewcontroller。但现在视图上的 GestureRecognizers 不再起作用了。

我的视图层次结构如下所示:

  • UIViewController(单事件控制器)
    • UIScrollView (EventScrollView)
      • UIView(内容视图)
        • UILabel、UIView、UITableView 等

这看起来是一个常见问题,因为我在 Stackoverflow 上发现了很多类似的问题: 示例 1 示例 2。尽管如此,我还是没能解决我的案子。

我的EventScrollView中的简化代码如下所示:

let locationLabel: UILabel = {
    let label           = UILabel()
    label.text          = "Standort"
    label.isUserInteractionEnabled = true //Important!
    return label
}()

override init(frame: CGRect) {
    super.init(frame: frame)
    self.isUserInteractionEnabled = true //not needed!
    contentView.isUserInteractionEnabled = true //Important!
}

func setupViews() {
    guard let parent = parentVC else { return }
    let locationTap = UITapGestureRecognizer(target: parent, action: #selector(parent.openInGoogleMaps))
    locationTap.cancelsTouchesInView = false …
Run Code Online (Sandbox Code Playgroud)

uiscrollview uiview uigesturerecognizer ios swift

2
推荐指数
1
解决办法
1670
查看次数