danielamitay / DAKeyboardControl

DAKeyboardControl adds keyboard awareness and scrolling dismissal (ala iMessages app) to any view with only 1 line of code.
Other
1.58k stars 214 forks source link

while a UITextView is editing, click to a UITextField, would make a dead loop #61

Open aelam opened 10 years ago

aelam commented 10 years ago

I have reviewed the code the problem might be here, see below

- (void)reAssignFirstResponder
  {
   // Find first responder
   UIView *inputView = [self findFirstResponder];
   if (inputView != nil) {
       // Re assign the focus
     //        [inputView resignFirstResponder];   // <-- the two lines cause a dead loop 
  // after commented the above line, it works well on iOS7, iOS5 (I have no other devices)
          [inputView becomeFirstResponder];
   }

}

and I did a little improvement, in -inputKeyboardWillChangeFrame, - (void)inputKeyboardWillShow:,-inputKeyboardWillHide: we don't need animation if keyboard frame not change, see below

    - (void)inputKeyboardWillShow:(NSNotification *)notification
   {
       CGRect keyboardEndFrameWindow = [notification.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue];

   CGRect keyboardBeginFrameWindow = [notification.userInfo[UIKeyboardFrameBeginUserInfoKey] CGRectValue];
   // if the frame of keyboard doesn't change, we just skip the animation
   if (CGRectEqualToRect(keyboardBeginFrameWindow, keyboardEndFrameWindow)) {
       self.keyboardActiveView.hidden = NO;
       if (self.panning && !self.keyboardPanRecognizer) {
           [self setupGestureRecognizer];
       }
       return;
   }