0

Ich habe eine benutzerdefinierte Navigationsleiste, die ich beim Scrollen und Anzeigen beim Scrollen ausblenden möchte.iOS: Ausblenden und Anzeige benutzerdefinierter Navigationsleiste beim Scrollen der Tabellenansicht

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView 
{ 
     self.navigationBView.hidden = YES; 
     self.bTableView.frame = CGRectMake(0, 0, CGRectGetWidth(self.view.frame), CGRectGetHeight(self.view.frame)); 
} 

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView 
{ 
    self.navigationBView.hidden = NO; 
    self.bTableView.frame = CGRectMake(0, CGRectGetHeight(self.navigationBView.frame), CGRectGetWidth(self.view.frame), CGRectGetHeight(self.view.frame) - CGRectGetHeight(self.navigationBView.frame)); 
} 

Aber Problem ist, dass ich auch eine UIRefreshControl bei Spann haben Methode zu aktualisieren. Wenn ich versuche, den TableView für die Aktualisierung zu ziehen, ruft er

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView 

auf und blendet die Navigationsleiste aus. Gibt es eine Methode, um zu überprüfen, ob der Benutzer vom oberen Bildschirmrand herunterzieht, d. H. Von der ersten Tabellenzelle?

Ich versuchte

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView 
{ 
    if (scrollView.contentOffset.y != 0) 
    { 
     self.navigationBView.hidden = YES; 
     self.bTableView.frame = CGRectMake(0, 0, CGRectGetWidth(self.view.frame), CGRectGetHeight(self.view.frame)); 
    } 

} 

tun Aber diese Navigationsleiste nicht ausblenden, wenn Benutzer Verlangsamung wird nach unten scrollen. Irgendeine Lösung, um das zu lösen?

Antwort

1

nur Ihren Zustand != um >= ändern scrollViewWillBeginDragging

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView 
{ 
    if (scrollView.contentOffset.y >= 0) 
    { 
     self.navigationBView.hidden = YES; 
     self.bTableView.frame = CGRectMake(0, 0, CGRectGetWidth(self.view.frame), CGRectGetHeight(self.view.frame)); 
    } 

} 
+0

ich es versucht. Aber wenn ich den Tisch wieder ziehe, um ihn zu aktualisieren, wird die Navigationsleiste ausgeblendet. – JMS

+0

lege sonst Bedingung und ihre make hidden = false – jay

0

Sie können mit folgendem Code versuchen, festzustellen, ob dies für Sie arbeitet.

@property (nonatomic) CGFloat lastContentOffset; // ist ein iVar

- (void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    float movement = fabsf(self.lastContentOffset-scrollView.contentOffset.y); 
    if (self.lastContentOffset > scrollView.contentOffset.y) 
    { 
     //user is scrolling up through the list 
     if (movement > 15 && movement < 40) 
     { 
      //show the navigation bar 
     } 

    } 
    else if (self.lastContentOffset < scrollView.contentOffset.y) 
    { 
     //user is scrolling down through the list 
     if (movement > 15 && movement < 40) 
     { 
      //show the navigation bar 
     } 
    } 

    self.lastContentOffset = scrollView.contentOffset.y; 
} 

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView 
{  
    //show the navigation bar 
} 
+0

In welchem ​​Code sollte ich die Navigationsleiste verstecken? Ich habe versucht, in beiden Bedingungen zu verstecken, aber wieder fehlgeschlagen – JMS

+0

Verwenden Sie Methoden nur in Antwort beschrieben, kommentieren Sie andere Methoden und bitte gehen Sie durch Kommentare in der Antwort. –

Verwandte Themen