我有一个VC,其中我有3个元素(顶部有2个文本字段,底部有1个文本视图)。不幸的是,键盘出现时隐藏了底部的文本视图。当用户点击或触摸底部的文本视图时,我想向上推动我的视图,但不是当他们触摸顶部的2个文本字段时。我找到了一个向上推动我的视图的解决方案,但是当触摸了3个元素中的任何一个时它都有效,从而将2个文本字段隐藏在顶部。如何仅在用户触摸文本视图时才能应用以下代码?
@IBOutlet weak var firstTopTextField: UITextField!
@IBOutlet weak var secondTopTextField: UITextField!
@IBOutlet weak var bottomTextView: UITextView!
override func viewDidLoad() {
super.viewDidLoad()
NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillShow:"), name:UIKeyboardWillShowNotification, object: nil);
NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillHide:"), name:UIKeyboardWillHideNotification, object: nil);
}
func keyboardWillShow(sender: NSNotification) {
self.view.frame.origin.y -= 160
}
func keyboardWillHide(sender: NSNotification) {
self.view.frame.origin.y += 160
}
答案 0 :(得分:1)
您可以使用UITextField/View
委托在文本字段开始编辑时收到通知。 E.g。
- (void)textFielDidBeginEditing:(UITextField *)textField
{
// Push screen up
}
值得注意的是,如果用户连接了外接键盘,屏幕键盘将不会显示,但屏幕仍然会被按下。您可以通过BOOL(或者我现在应该说var
)来避免这种情况,它会告诉您键盘是否正在显示。
E.g。
var isShown = false
func keyboardWillShow(sender:NSNotification) {
isShown = true
}
func keyboardWillHide(sender:NSNotification) {
isShown = false
}
func textFieldDidBeginEditing(textField:UITextField) {
if isShown == true {
// Push screen up.
}
}