我正在使用Xcode 6用Swift构建iOS应用程序。我试图将带有表视图的视图控制器嵌入滚动视图中。当用户在表视图中拖动时,它应该移动表格,而不是嵌入其中的滚动视图。
这张图片清晰地展示了我的视图和视图控制器层次结构: 红色区域是滚动视图的内容大小区域。
绿色和蓝色区域是不同的视图控制器,嵌入在滚动视图中。
黄色区域是蓝色视图控制器中的文本字段。
橙色区域是蓝色视图控制器中的表视图。
我已经在滚动视图中启用了分页功能,这样它就可以自动定位到相应的绿色或蓝色视图控制器。那么我如何将表视图放置在视图层次结构的顶部,以便只能通过在文本字段中拖动来滚动滚动视图呢?
这张图片清晰地展示了我的视图和视图控制器层次结构: 红色区域是滚动视图的内容大小区域。
绿色和蓝色区域是不同的视图控制器,嵌入在滚动视图中。
黄色区域是蓝色视图控制器中的文本字段。
橙色区域是蓝色视图控制器中的表视图。
我已经在滚动视图中启用了分页功能,这样它就可以自动定位到相应的绿色或蓝色视图控制器。那么我如何将表视图放置在视图层次结构的顶部,以便只能通过在文本字段中拖动来滚动滚动视图呢?
import UIKit
class RootViewController: UIViewController, UIScrollViewDelegate {
var scrollView: UIScrollView!
var greenViewController: GreenViewController!
var blueViewController: BlueViewController!
override func viewDidLoad() {
super.viewDidLoad()
scrollView = UIScrollView(frame: CGRectMake(0, 0, self.view.frame.width, self.view.frame.height))
scrollView.delegate = self
scrollView.pagingEnabled = true
self.greenViewController = self.storyboard?.instantiateViewControllerWithIdentifier("Green View Controller") as! GreenViewController
self.blueViewController = self.storyboard?.instantiateViewControllerWithIdentifier("Blue View Controller") as! BlueViewController
greenViewController.view.frame = CGRectMake(0, 0, view.bounds.width, view.bounds.height)
blueViewController = CGRectMake(0, view.bounds.height, view.bounds.width, view.bounds.height)
scrollView.addSubview(greenViewController.view)
scrollView.addSubview(blueViewController.view)
scrollView.contentSize = CGSizeMake(view.bounds.width, view.bounds.height*2)
self.view.addSubview(scrollView)
}
我希望我已经表达清晰。
编辑:
我尝试更改滚动视图的大小,使其在滚动时自适应文本框的高度,但似乎这也会改变滚动视图中嵌入内容的可见部分:
func scrollViewDidScroll(scrollView: UIScrollView) {
if self.scrollView.contentOffset.y > textField.View.bounds.height {
self.scrollView.frame.size.height = view.bounds.height - scrollView.contentOffset.y - textField.View.bounds.height
println(self.scrollView.frame)
}
}