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의 하위 클래스이기 때문에 존재합니까?