Domanda

Sto davvero perdendo i capelli a causa di un semplice compito che è diventato un inferno. Quindi ho una sottoclasse UIScrollView - la sottoclasse MyScrollView e UIViewController StoryViewController che usa quella vista di scorrimento. Devo sapere quando viene fatto scorrere lo scorrimento, quindi cosa devo fare? Provo a delegare!

// StoryViewController.h
@interface StoryViewController : UIViewController <UIScrollViewDelegate>

// StoryViewController.m
// init
scrollView  = [[MyScrollView alloc] init];
scrollView.delegate = self;

// delegated function
- (void)scrollViewDidScroll:(UIScrollView *)s {
    NSLog(@"TEST");
}

Modifica: alcuni NSLogs

Self: <StoryViewController: 0xfce090>
ScrollView Delegate: <StoryViewController: 0xfce090>
WebView Delegate: <StoryViewController: 0xfb1a30>

Modifica: la sottoclasse UIWebView (MyWebView) che è una sottoview di MyScrollView funziona bene e (nulla) webViewDidFinishLoad: (UIWebView *) webView (nella stessa storyviewcontroller.m) stampa il messaggio.

Nessun errore, costruisce bene, funziona bene. Dopo lo scorrimento, non viene stampato nulla.

Cosa sto sbagliando?

È stato utile?

Soluzione 3

Quindi, ancora una volta, il premio per stupidità va a Sniurkst. In realtà era UIWebView che è stato aggiunto in modo errato a UIScrollView, quindi per me era " oh mio dio, la mia vista di scorrimento funziona ", mentre era ancora UIWebView che scorreva da solo.

Scusa, per la mia stupidità. Grazie a tutti per aver cercato di aiutarmi, la prossima volta aggiungerò altri esempi di codice, così potrete vedere cosa sta succedendo e ridere dei miei errori :)

E se qualcuno mi indicasse un esempio su come utilizzare correttamente ScrollView con WebView all'interno, in modo che ScrollView sia responsabile di tutto lo scorrimento, sarei molto grato.

Altri suggerimenti

Questa potrebbe essere un'aringa rossa, ma stai chiamando alloc e init, piuttosto che alloc e initWithFrame :. Suppongo che stai aggiungendo scrollView nel tuo metodo viewDidLoad? È un controller basato su XIB? Hai provato ad aggiungere la vista di scorrimento nel file XIB e a impostare le cose lassù? Hai provato ad aggiungere altri metodi delegati?

Sei sicuro che scrollView sia in effetti la visualizzazione a scorrimento visualizzata? Un paio di cose a cui posso pensare di controllare in ordine di disperazione:

  1. Verifica di aver effettivamente aggiunto scrollView a self.view dopo aver caricato self.view
  2. Verifica che quando aggiungo scrollView a self.view, sia lo stesso oggetto che avevo quando stavo assegnando il delegato
  3. Controlla quando aggiungo scrollView che il delegato di scrollView è ancora impostato sul controller di visualizzazione
  4. Controlla che self sia, in effetti, impostato sul controller di visualizzazione quando assegni il delegato
  5. Prova a utilizzare un normale UIScrollView e vedi se qualcosa cambia
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top