这是我的代码:
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的功能。我更新了整个代码,以便你们可以看到。' 再次感谢
答案 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方法中,您没有做任何事情来使文本字段根据键盘位置/高度改变它的框架。