我是 Swift 的初学者,所以目前我使用故事板来组织我的应用程序的大部分。
我想构建一些包含 textField 和 pickerView 的可滚动视图。
每个都是stacked View,然后是view A的child view,view A是scrollView的child view。
帮助您了解更多,我将附上我的应用程序结构。
无论如何,当我运行我的应用程序时,它代表了我想要达到的效果,但是,无法得到任何触摸反应。
当我触摸 textField 时,键盘没有弹出,pickerView 滚动不起作用。我认为这是因为嵌套视图,但不知道如何解决。
请帮忙!也很高兴给一些学习 Swift 的建议。提前谢谢。
* 编辑 1) 附上我的代码 *
import UIKit
class ViewController:
UIViewController, UIPickerViewDataSource, UIPickerViewDelegate
{
@IBOutlet var outerView: UIView!
@IBOutlet weak var scrollView: UIScrollView!
@IBOutlet weak var statePicker: UIPickerView!
@IBOutlet weak var innerView: UIView!
@IBOutlet weak var nameInputer: UITextField!
let states = ["Alaska", "Arkansas", "Alabama", "California", "Maine", "New York"]
override func viewDidLoad() {
super.viewDidLoad()
var scrollViewHeight:CGFloat = 0.0
for view in self.view.subviews as [UIView] {
scrollViewHeight += view.frame.size.height;
}
scrollView.contentSize = CGSize(width: view.frame.width, height: scrollViewHeight)
scrollView.contentInset = UIEdgeInsetsMake(20, 0, 20, 0)
statePicker.dataSource = self
statePicker.delegate = self
statePicker.isExclusiveTouch = true
scrollView.canCancelContentTouches = false
innerView.sendSubview(toBack: outerView)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return states.count
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return states[row]
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
statePicker.isHidden = true
}
}