gpt4 book ai didi

ios - 动态设置Scrollview的Contentsize不起作用

转载 作者:行者123 更新时间:2023-11-30 12:21:34 30 4
gpt4 key购买 nike

我拼命想弄清楚这个问题,我花了一整天的时间,但没有运气。我想要做的就是拥有一个用户可以单击的文本字段列表,它将把键盘放在页面上,以便 A)该字段不会被阻止,并且(我已经弄清楚了该部分)和 B)顶部键盘弹出时 View 不会被切断。这是我到目前为止所拥有的( http://imgur.com/a/LExyo ),但是您可以清楚地看到问题〜这是 View 的顶部,我无法进一步向上滚动。我试图将整个内容埋在 ScrollView 中,然后更改 ScrollView 的内容大小,但这没有任何作用。任何帮助,将不胜感激。谢谢。 (我正在尝试在 swift 3 中执行此操作)。

class ViewController4: UIViewController,  UITextFieldDelegate {

var dataState: Data?

@IBOutlet weak var UserNameLabel: UILabel!

@IBOutlet weak var TextField1Outlet: UITextField!


@IBOutlet weak var TextField2Outlet: UITextField!

@IBOutlet weak var TextField3Outlet: UITextField!


@IBOutlet weak var TextField4Outlet: UITextField!


@IBOutlet weak var TextField5Outlet: UITextField!

@IBOutlet var ViewFrame: UIView!


@IBOutlet weak var scrollView: UIScrollView!


@IBAction func TextField1Action(_ sender: Any) {
}

@IBAction func TextField2Action(_ sender: Any) {
}


@IBAction func TextField3Action(_ sender: Any) {
}


@IBAction func TextField4Action(_ sender: Any) {
}


@IBAction func TextField5Action(_ sender: Any) {
}


override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
UserNameLabel.text = dataState?.LoginName
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let destinationViewController = segue.destination as? ViewController1 {
destinationViewController.dataState = dataState
}
}

func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}

override func viewDidLoad() {
super.viewDidLoad()

scrollView.contentSize = CGSize(width: self.view.frame.width, height: self.view.frame.height)
scrollView.delegate = self as? UIScrollViewDelegate

TextField1Outlet.returnKeyType = UIReturnKeyType.done
TextField1Outlet.delegate = self

TextField2Outlet.returnKeyType = UIReturnKeyType.done
TextField2Outlet.delegate = self

TextField3Outlet.returnKeyType = UIReturnKeyType.done
TextField3Outlet.delegate = self

TextField4Outlet.returnKeyType = UIReturnKeyType.done
TextField4Outlet.delegate = self

TextField5Outlet.returnKeyType = UIReturnKeyType.done
TextField5Outlet.delegate = self

NotificationCenter.default.addObserver(self, selector: #selector(ViewController4.keyboardWillShow), name: NSNotification.Name.UIKeyboardWillShow, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(ViewController4.keyboardWillHide), name: NSNotification.Name.UIKeyboardWillHide, object: nil)
}

func keyboardWillShow(notification: NSNotification) {
if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
if self.view.frame.origin.y == 0{
self.view.frame.origin.y -= keyboardSize.height
let newHeight = self.view.frame.height + keyboardSize.height
scrollView.contentSize = CGSize(width: self.view.frame.width, height: newHeight)

}
}
}

func keyboardWillHide(notification: NSNotification) {
if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
if self.view.frame.origin.y != 0{
self.view.frame.origin.y += keyboardSize.height
scrollView.contentSize = CGSize(width: self.view.frame.width, height: self.view.frame.height)
}
}
}
}

最佳答案

使用内容插图而不是内容大小:

scrollView.contentInset = UIEdgeInsets(top: 0.0, left: 0.0, bottom: /* keyboard height */, right: 0.0)

关于ios - 动态设置Scrollview的Contentsize不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44730014/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com