2013-05-10 34 views
5

Tôi có một UIPopover với một UIScrollView bên trong nó có chứa UITextView ở dưới cùng. Khi bàn phím hiển thị, cửa sổ bật lên được thay đổi kích thước khi chế độ xem văn bản bắt đầu được chỉnh sửa. Tôi muốn mã bên dưới để đảm bảo chế độ xem văn bản hiển thị:UITextView bên trong UIScrollView bên trong Popover không hiển thị đầy đủ khi bàn phím được hiển thị

- (void)textViewDidBeginEditing:(UITextView *)textView { 

    CGRect visRect = textView.frame; 
    [self.scrollView scrollRectToVisible:visRect animated:NO]; 

} 

Sự cố là mã không hiển thị toàn bộ văn bản. Thay vào đó, chỉ có văn bản xem lên đến đáy của con trỏ được hiển thị, như hình dưới đây:

enter image description here

Làm thế nào tôi có thể hiển thị toàn bộ view text/cuộn scrollview xuống đáy? Tôi đã thử điều này:

CGPoint bottomOffset = CGPointMake(0, self.scrollView.contentSize.height - self.scrollView.bounds.size.height); 
[self.scrollView setContentOffset:bottomOffset animated:YES]; 

như được giải thích in this answer nhưng không có tác dụng.

Ngoài ra, chế độ xem cuộn của tôi được cuộn đến vị trí được hiển thị SAU KHI bàn phím được di chuyển vào vị trí. Lý tưởng nhất là tôi muốn cuộn để xảy ra trước hoặc trong khi di chuyển bàn phím.

Mọi trợ giúp đều tuyệt vời.

+0

Trước khi di chuyển để visRect, thay đổi visRects nguồn gốc là "visRect.origin.y = CGRectGetMaxY (visRect)". Và sau đó cuộn đến trực tràng này. – croyneaus4u

+0

@ croyneaus4u. Cảm ơn, đã không giúp đỡ không may. –

Trả lời

1

Tôi tìm thấy giải pháp:

- (void)keyboardDidShow:(NSNotification *)notification { 
NSLog(@"Notification: %s", __PRETTY_FUNCTION__); 
// 
CGFloat textviewBottom = CGRectGetMaxY(self.commentsTextView.frame); 
CGRect belowTextViewRect = CGRectMake(0, textviewBottom, 350.f, self.scrollView.contentSize.height - textviewBottom); 
// NB! This works ONLY: 1) keyboardDidShow 2) Non-animated; 
// Does NOT work: 1) animated, 2) keyboardWillShow, 3) textViewDidBeginEditing 
[self.scrollView scrollRectToVisible:belowTextViewRect animated:NO]; 
} 
1

@hey Dave

này Theo mặc định Trường hợp trong các UIPopOverController, bất cứ khi nào chúng tôi sử dụng UIPopOverControler để hiển thị bất kỳ PopUpView và giả sử rằng PopUpView chiều cao lớn như có thể được bao phủ bởi KeyBoard sau đó trong trường hợp đó mà PopOverView Tự động nhận Shrink chính bạn. bạn từ chức bàn phím mà PopUpView sẽ tự động mở rộng. Tôi đã phải đối mặt với trường hợp tương tự.

Đây chỉ là quan điểm của tôi, bạn có thể thay đổi nguồn gốc của CurrentView(parentView of PopUpView) như bàn phím đi để hiển thị/ẩn để PopUpView thể hiển thị bản thân hoàn toàn khỏi và có thể nhận được không gian thích hợp.

Xem bên dưới Là phương thức đại biểu của UITextView Trả lời lại dưới dạng bắt đầu và kết thúc chỉnh sửa.

- (BOOL)textViewShouldBeginEditing:(UITextView *)textView 
{ 
//chnage the OriginY of PopUpView's SUperView 
} 
- (void)textViewDidBeginEditing:(UITextView *)textView 
{ 
//re Adjust the OriginY of PopUpView's SUperView 
} 

Tôi hy vọng nó có thể hữu ích cho bạn.

+0

Cảm ơn bạn đã đề xuất. –

+0

@DaveChambers u welcome ..... !!!!!!!!! – Kamarshad

+0

@DaveChambers ít nhất bạn nên có upVoted nỗ lực của tôi, nếu nó thực sự cho bạn bất kỳ ý tưởng .... !!!! :) – Kamarshad

Các vấn đề liên quan