2017-09-08 11 views
1

UITextView는 UIScrollView에 UITextView를 추가하기 위해 단추를 누를 때 첫 번째 응답자가됩니다. 사실 UITextView 또는 UITextField가 포함 된 UIView는 UIScrollView에 추가됩니다. 키보드가 나타나면 scrollview가 위로 스크롤되지 않지만 UITextField는 첫 번째 응답자가되면 스크롤 업합니다. 위로 스크롤하려면 UIKeyboardDidShowNotification을 등록합니다. 아래는 내 코드입니다왜 UITextView가 첫 번째 응답자가 될 때 UIScrollView가 위로 스크롤되지 않습니까?

- (void)keyboardDidShow:(NSNotification *)notification { 
     CGRect keyboardEndFrame; 
     [(notification.userInfo)[UIKeyboardFrameEndUserInfoKey] getValue:&keyboardEndFrame]; 

     NSInteger height = CGRectGetHeight(keyboardEndFrame); 

     NSInteger lastObj = arrayTotalObjects.count - 1; 
     UIView *lastView = [arrayTotalObjects objectAtIndex:lastObj]; 

     if(!(lastView.frame.origin.y > height)) 
      return; 

     UIEdgeInsets inset = originalInset; 
     inset.bottom += height; 
     NSLog(@"inset: %f", inset.bottom); 

     [UIView animateWithDuration:0.3f animations:^{ 
      scrlView.contentInset = inset; 
     }completion:^(BOOL finished) { 
      NSLog(@"scrlView inset bottom: %f", scrlView.contentInset.bottom); 
     }]; 
} 

이 경우 lastView는 UITextView가 포함 된 UIView입니다.

이 코드는 UITextField에서는 작동하지만 UITextView에서는 작동하지 않습니다. 어떻게 가능합니까? UITextView가 UIScrollView의 하위 클래스이기 때문에 존재합니까?

답변

0

요약하면 질문에 대한 대답은 예입니다.이 동작은 UITextView가 UIScrollView의 하위 클래스이기 때문에 발생합니다. 더 자세한 내용과 해결책을 해제하는 방법은 here을 참조하십시오.