사용자가 키보드를 클릭 할 때 클릭하는 텍스트 필드가 있습니다. 그런 다음 스크롤 뷰가 조정되어 입력중인 내용을 읽을 수 있습니다.키보드가 iOS에 표시 될 때 스크롤하지 않습니다.
내 문제는 일단 사용자가 화면에서 계속 스크롤 할 수있게하려는 것입니다. 어떻게 할 수 있습니까?
사용자가 키보드를 클릭 할 때 클릭하는 텍스트 필드가 있습니다. 그런 다음 스크롤 뷰가 조정되어 입력중인 내용을 읽을 수 있습니다.키보드가 iOS에 표시 될 때 스크롤하지 않습니다.
내 문제는 일단 사용자가 화면에서 계속 스크롤 할 수있게하려는 것입니다. 어떻게 할 수 있습니까?
1 부 :
스크롤 뷰의 컨텐츠 크기가 실제로 포함 된 뷰의 크기 또는 위치 관련이 없습니다. 스크롤 뷰의 내용뿐만 아니라 내용보기의 크기를 변경하려면 두 가지 방법을 호출해야합니다.
CGSize newSize;
UIScrollView *scrollView;
// assume self is the content view
CGRect newFrame = (CGRect){CGPointZero,newSize}; // Assuming you want to start at the top-left corner of the scroll view. Change CGPointZero as appropriate
[ scrollView setContentSize:newSize]; // Change scroll view's content size
[self setFrame:newFrame]; // Change views actual size
2 부 :
setNeedsDisplay 디스플레이를 필요로 전체보기를 표시한다. 표시되는 부분 만 표시하려면 setNeedsDisplayInRect : visibleRect를 사용해야합니다. 보기가 왼쪽 위 모서리 (프레임의 원점은 0)에 있고 스크롤보기가 확대를 허용하지 않는다고 가정하면 보이는 사각형은 스크롤보기의 내용 오프셋 및 범위 크기를 사용하여 찾을 수 있습니다.
CGRect visibleRect;
visibleRect.origin = [scrollView contentOffset];
visibleRect.size = [scrollView bounds].size;
[self setNeedsDisplayInRect:visibleRect];
부분 만 변경하면 보이는 사각형의 일부분을 그리도록 선택할 수도 있습니다.
- (void)viewDidLoad
{
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWasShown:)
name:UIKeyboardDidShowNotification
object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWasShown:)
name:UIKeyboardWillHideNotification
object:nil];
}
- (void)keyboardWasShown:(NSNotification *)notification
{
// To avoid keyboard hides the view
CGRect frame = self.view.bounds;
if (capitalTextField.enabled ==YES)
{
if ([notification name]== UIKeyboardDidShowNotification)
{
frame.origin.y += 200;
[self.scrollView scrollRectToVisible:frame animated:YES];
}
else
{
frame.origin.y -= 200;
[self.scrollView scrollRectToVisible:frame animated:YES];
}
}
}
은 그냥있는 ScrollView
의 contentsize 속성의 높이를 증가 :그리고 당신은 또한 다음과 같은 예를 볼 수 있습니다