2013-05-10 10 views
5

Ho un UIPopover con uno UIScrollView al suo interno che contiene uno UITextView nella parte inferiore. Quando viene visualizzata la tastiera, il popover viene ridimensionato mentre la visualizzazione del testo inizia a essere modificata. Voglio che il codice sottostante per garantire la visualizzazione del testo è visibile:UITextView all'interno di un UIScrollView all'interno di un Popover non è completamente visibile quando viene visualizzata la tastiera

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

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

} 

Il problema è che il codice non rende l'intera vista testo visibile. Invece, solo visualizzare il testo fino alla parte inferiore del cursore è mostrata, come illustrato di seguito:

enter image description here

Come posso mostrare l'intera vista del testo/scorrere la ScrollView fino in fondo? Ho provato questo:

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

come spiega in this answer ma non funziona niente.

Inoltre, la mia vista scroll viene spostata nella posizione indicata DOPO che la tastiera viene spostata in posizione. Idealmente mi piacerebbe che lo scorrimento avvenga prima o durante il movimento della tastiera.

Qualsiasi aiuto sarebbe fantastico.

+0

prima di scorrere a visRect, modificare l'origine visRects come "visRect.origin.y = CGRectGetMaxY (visRect)". E poi scorrere fino a questo rect. – croyneaus4u

+0

@ croyneaus4u. Grazie, purtroppo non ho aiutato. –

risposta

1

ho trovato la soluzione:

- (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

Questa impostazione predefinita Caso in di UIPopOverController, ogni volta che abbiamo usato UIPopOverControler per visualizzare qualsiasi PopUpView e nel supporre che PopUpView altezza grande come può essere coperto da KeyBoard allora in quel caso che PopOverView ottiene automaticamente Shrink stesso.come si abbandona la tastiera che PopUpView si espanderà automaticamente. Ho affrontato lo stesso caso.

Questa è solo la mia opinione, è possibile modificare l'origine di CurrentView(parentView of PopUpView) come la tastiera di andare a visualizzare/nascondere in modo che PopUpView poteva mostrarsi correttamente da e potrebbe ottenere lo spazio adeguato.

Vedere di seguito sono i metodi Delegate di UITextView Risponde indietro come modifica inizio e fine.

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

spero che possa utile a voi.

+0

Grazie per il suggerimento. –

+0

@DaveChambers siete i benvenuti ..... !!!!!!!!! – Kamarshad

+0

@DaveChambers almeno dovresti aver fatto salire i miei sforzi, se davvero ti ha dato qualche idea .... !!!! :) – Kamarshad

Problemi correlati