Я использую scrolview для вида с высотой 1000, изначально я не хочу, чтобы мой scrolView прокручивался. если я нажимаю на любое текстовое поле, тогда я хочу, чтобы прокрутка прокручивалась, а если я возвращаю клавиатуру, я не хочу, чтобы прокрутка прокручивалась.
Здесь я могу увеличить текстовое поле, когда появляется клавиатура, но не могучтобы вернуть текстовое поле в его исходное положение, когда я возвращаю клавиатуру и когда я возвращаю клавиатуру, я не хочу, чтобы мое представление прокручивалось,
Пожалуйста, помогите мне в коде.
class ViewController: UIViewController, UITextFieldDelegate {
@IBOutlet weak var scrolView: UIScrollView!
@IBOutlet weak var upTFLD: UITextField!
var activeTextField = UITextField()
@IBOutlet weak var downTFLD: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
upTFLD.delegate = self
downTFLD.delegate = self
NotificationCenter.default.addObserver(self, selector: #selector(onKeyboardAppear(_:)), name: UIResponder.keyboardDidShowNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(onKeyboardDisappear(_:)), name: UIResponder.keyboardDidHideNotification, object: nil)
}
@objc func onKeyboardAppear(_ notification: NSNotification) {
let info = notification.userInfo!
let rect: CGRect = info[UIResponder.keyboardFrameBeginUserInfoKey] as! CGRect
let kbSize = rect.size
let insets = UIEdgeInsets(top: 0, left: 0, bottom: kbSize.height+20, right: 0)
self.scrolView.contentInset = insets
self.scrolView.scrollIndicatorInsets = insets
var visibleRect: CGRect = self.scrolView.convert(self.scrolView.bounds, to: self.view)
visibleRect.size.height -= rect.size.height;
let inputRect: CGRect = self.activeTextField.convert(self.activeTextField.bounds, to: self.scrolView)
if (visibleRect.contains(inputRect)) {
self.scrolView.scrollRectToVisible(inputRect, animated: true)
}
}
@objc func onKeyboardDisappear(_ notification: NSNotification) {
self.scrolView.contentInset = UIEdgeInsets.zero
self.scrolView.scrollIndicatorInsets = UIEdgeInsets.zero
}
public func textFieldDidBeginEditing(_ textField: UITextField) {
activeTextField = textField
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
activeTextField.resignFirstResponder()
return true
}
}
изначально я не хочупрокрутка, и если я верну клавиатуру, мне нужно, чтобы текстовое поле вернулось в исходное положение и больше не прокручивать.
Появляется только клавиатура, только мне нужна прокрутка. пожалуйста, помогите мне в коде.