小编Ber*_*rik的帖子

当contentSize更改时,UIScrollView会调整contentOffset

我正在调整一个详细视图控制器的状态,就在它按下之前navigationController:

[self.detailViewController detailsForObject:someObject];
[self.navigationController pushViewController:self.detailViewController
                                     animated:YES];
Run Code Online (Sandbox Code Playgroud)

DetailViewController一个scrollView驻留.我根据传递的对象调整了哪些内容:

- (void)detailsForObject:(id)someObject {
    // set some textView's content here
    self.contentView.frame = <rect with new calculated size>;

    self.scrollView.contentSize = self.contentView.frame.size;
    self.scrollView.contentOffset = CGPointZero;
}
Run Code Online (Sandbox Code Playgroud)

现在,这一切都有效,但scrollView会contentOffset在navigationController的滑入式动画中调整它.在contentOffset将被设置为最后contentSize和新计算之间的差异.这意味着第二次打开detailsView时,详细信息将滚动到某个不需要的位置.即使我设置contentOffsetCGPointZero明确.

我发现,重新contentOffset- viewWillAppear没有任何效果.我能想到的最好的方法是重置contentOffset viewDidAppear,导致内容明显上下移动:

- (void)viewDidAppear:(BOOL)animated {
    self.scrollView.contentOffset = CGPointZero;
}
Run Code Online (Sandbox Code Playgroud)

有没有办法防止UIScrollViewcontentOffsetcontentSize改变时调整它?

iphone uiscrollview ios contentsize

37
推荐指数
2
解决办法
4万
查看次数

在命令行工具上使用 Swift URLSession 示例代码

我试图找出从命令行在 Swift 4 中发出 HTTP 请求的最简单方法。我从URLSession 编程指南中复制了这段代码,并添加了几个打印语句。我无法弄清楚为什么.dataTask没有执行。

print("Testing URLSession")
let sessionWithoutADelegate = URLSession(configuration: URLSessionConfiguration.default)
if let url = URL(string: "https://www.example.com/") {
    print("Encoded url \(url)")
    (sessionWithoutADelegate.dataTask(with: url) { (data, response, error) in
        print("Executing dataTask")
        if let error = error {
            print("Error: \(error)")
        } else if let response = response,
            let data = data,
            let string = String(data: data, encoding: .utf8) {
            print("Response: \(response)")
            print("DATA:\n\(string)\nEND DATA\n")
        }
    }).resume()
}
Run Code Online (Sandbox Code Playgroud)

目标是从 REST api 检索数据,但我什GET至无法发出简单的请求才能正常工作......

foundation nsurlsession swift

0
推荐指数
1
解决办法
4459
查看次数