2015-09-14 31 views
0

现在我有,如果底部的文本框被窃听否则,如果顶部的文本字段上,然后拍了拍我的屏幕没有转变,转变整个屏幕了一个功能:UITapGestureRecognizer各国不工作

func keyboardWillShow(notification: NSNotification) { 
     var tapTopTextField: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: nil) 
     topTextField.addGestureRecognizer(tapTopTextField) 
     topTextField.userInteractionEnabled = true 
     if(tapTopTextField.state == .Began) { 
      // don't move screen 
     } 
     // then it is the bottomTextField that is tapped 
     else { 
      self.view.frame.origin.y -= getKeyboardHeight(notification) 
     } 

    } 

所以使用这段代码,如果topTextField被点击,而另一种方式使它不改变,我的屏幕仍然会移动,通过让状态为.Possible,但是这样做会禁止当点击bottomTextField时屏幕向上移动。有没有我在这里失踪的东西,还有一个更优雅的方式来做到这一点?

更新:所以我意识到,这是发生的原因是因为当这个函数被调用的文本框已经被选择,因而被重置为.Possible状态

回答

0

我走的方式是设计UI等等文本字段在键盘的最前面。如果某些东西需要在底部并且可以通过键盘覆盖,我让用户处理滚动。

0

所以我想出了答案,在这里!

func keyboardWillShow(notification: NSNotification) { 

      if(topTextField.isFirstResponder()) { 
       // don't move screen 
      } 
      // then it is the bottomTextField that is tapped 
      else { 
       self.view.frame.origin.y -= getKeyboardHeight(notification) 
      } 

     } 

通过使用isFirstResponder我可以检查textField是否被选中!