我试图找出如何使键盘不隐藏文本字段

时间:2017-06-25 04:28:07

标签: ios swift

这是我的代码:

class TextViewController: UIViewController, UITextFieldDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate{
    @IBOutlet weak var chatTextField: UITextField!
    @IBOutlet weak var SendButton: UIButton!
    @IBOutlet weak var ChatField: UILabel!
    @IBOutlet var keyboardHeightLayoutConstraint: NSLayoutConstraint?

    var textView: UITextView! { return (view as! UITextView) }

    override func loadView() {
        let textView = UITextView(frame: UIScreen.main.bounds, textContainer: nil)
        textView.alwaysBounceVertical = true
        textView.keyboardDismissMode = .interactive
        view = textView
    }

    deinit {
        NotificationCenter.default.removeObserver(self)
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        chatTextField.delegate = self
        NotificationCenter.defaultCenter.addObserver(self, selector: #selector(TextViewController.keyboardWillShow(_:)), name: UIKeyboardWillShowNotification, object: nil)
    }

func keyboardWillShow(notification: NSNotification) {
    let frameEnd = (notification.userInfo![UIKeyboardFrameEndUserInfoKey] as! NSValue).cgRectValue
    let keyboardHeightEnd = view.convert(frameEnd, from: nil).size.height
       }





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


func textFieldDidBeginEditing(_ textField: UITextField)
{

}

func textFieldDidEndEditing(_ textField: UITextField) {
    ChatField.text=textField.text
      }

但编译器显示:

  

"类型TextViewController没有成员keyboardWillShow"

有谁知道如何解决这个问题? 对不起,但我确实有一个名为keyboardWillShow的功能。我更新了整个代码,以便你们可以看到。' 再次感谢

3 个答案:

答案 0 :(得分:2)

您需要在班级中添加keyboardWillShow方法:

func keyboardWillShow(notification: NSNotification) {
     // Add your logic here.
}

答案 1 :(得分:0)

使用选择器TextViewController时,您无需添加keyboardWillShow(_:)。我使用以下更改运行您的代码,它运行正常。

NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(notification:)), name: NSNotification.Name.UIKeyboardWillShow, object: nil)

希望它有所帮助!

答案 2 :(得分:0)

Bilawal是对的,在方法指示您要将其作为类方法调用之前,将类名添加为前缀,同时将其声明为实例方法。

同样在keyboardWillShow方法中,您没有做任何事情来使文本字段根据键盘位置/高度改变它的框架。