2013-07-13 2 views
0

텍스트 필드와 텍스트 뷰가있는 응용 프로그램이 있는데 키보드를 가져 오면 하위 텍스트 필드가 숨겨집니다. 내가 어떻게 할거야.키보드가 활성화되었을 때 스크롤링

나는 시도했다 :

하는 .m :

- (void)textFieldDidBeginEditing:(UITextField *)sender { 
    CGSize content = _scrollView.contentSize; 
    _scrollView.contentSize = CGSizeMake(content.width, content.height + 200); 
    svos = _scrollView.contentOffset; 
    CGPoint pt; 
    CGRect rc = [sender bounds]; 
    rc = [sender convertRect:rc toView:_scrollView]; 
    pt = rc.origin; 
    pt.x = 0; 
    pt.y -= 200; 
    [_scrollView setContentOffset:pt animated:YES]; 
} 

- (IBAction)textFieldShouldReturn:(UITextField *)textField { 
    CGSize content = _scrollView.contentSize; 
    _scrollView.contentSize = CGSizeMake(content.width, content.height - 200); 
    [_scrollView setContentOffset:svos animated:YES]; 
    [textField resignFirstResponder]; 
} 

.H :

CGPoint svos; 

하단의 텍스트 필드는 여전히 눈에 보이는 것들로 스크롤 않습니다 숨겨져 있지만

+0

달성하고자하는 것은 그리 간단하지 않습니다. 보낸 사람 텍스트 필드의 원본을 가져 왔지만 60 자까지만 올리므로 아래쪽 텍스트 필드는 키보드로 덮여 있습니다. 키보드의 높이를 알아 내고 위로 올라갈 거리를 계산해야합니다. 이것 좀 봐 [http://stackoverflow.com/questions/1126726/how-to-make-a-uitextfield-move-up-when-keyboard-is-present?rq=1](http://stackoverflow.com)/question/1126726/how-to-make-a-uitextfield-move-up-when-keyboard-is-present? rq = 1) – Rick

+0

@Rick 앱을 수정중인 항목을 변경할 때와는 별개로 작동합니다. 내용이 낮 으면 –

+0

으로 스크롤 할 수 없습니다. 스크롤보기를 사용 중이면 내용 하단의 텍스트 필드로 스크롤하기 위해 빈 공간이있는 contentSize를 확장 할 수 있습니다. 앱이 왜 추락했는지에 관해서는 정교하게 다룰 필요가 있습니다. – Rick

답변

0

보낸 사람 텍스트 필드의 원본을 가져 왔지만 60만큼 위로 이동해야하므로 낮은 텍스트 필드는 키보드로 덮여 있습니다. 키보드의 높이를 알아 내고 위로 올라갈 거리를 계산해야합니다. this을 확인하십시오. 그것은 많은 답변을하므로 다시 설명하지 않겠습니다. 당신이 빈 공간을 충당하기 위해 키보드를 마지막 텍스트 필드로 스크롤 허용 할 수 있도록

CGSize content = _scrollview.contentSize; 
_scrollview.contentSize = CGSizeMake(content.width, content.height + 200); 

이 프로그래밍 방식 contentSize을 확장합니다

는 textFieldDidBeginEditing에 다음 줄을 추가, 안에있는 ScrollView 하단의 텍스트 필드로 이동하려면 .

textFieldDidEndEditing 또는 textFieldShouldReturn에서, 귀하의 경우, 다음을 추가

CGSize content = _scrollview.contentSize; 
_scrollview.contentSize = CGSizeMake(content.width, content.height - 200); 

나는 예로서 임의의 (200)을 사용했다. 너는 너가 원하는 얼마를 계산할 필요가있을 것이다.

+0

하단에 px가 추가되지 않습니다 –

+0

자세히 기재하십시오. 또한,'pt.y - = 60;'을'pt.y - = 200;'으로 설정하고 변경 사항이 있는지 확인하십시오. – Rick

+0

아직 아무 일도 일어나지 않습니다. –

0

드롭의 보편적 인 솔루션

https://github.com/michaeltyson/TPKeyboardAvoiding

그것은 나를 위해 완벽하게 작동하는 아이폰 OS

에서 키보드의 길에서 텍스트 필드를 이동.

단순히 당신이 TPKeyboardAvoidingTableView에 TPKeyboardAvoidingScrollView 또는 jQuery과에있는 UIScrollView 클래스를 변경해야 할 프로젝트에와 인터페이스 빌더 파일에 필요한 클래스 (TPKeyboardAvoidingScrollView 또는 TPKeyboardAvoidingTableView)를 복사 할 필요가, 나머지 일들은이 클래스에 의해 처리됩니다.

enter image description here

+0

감사합니다. –

0

는 키보드를 관리하는 방법에 대한 설명서를 본 적이 있나요? (apple documentation) 나는 당신이 일하고 있다고 생각하는 예가있다. 희망이 도움이됩니다.

관련 문제