App maken: ook jij kunt het leren!

 

de iOS Academie Forums

Forums - App-ontwikkeling - Swift en iOS: PDF in UIWebView

Cor  Cor heeft nog geen Studiekaart. Klokje29 mei 2015, 18:19
Avatar
Avatar
Berichten:44


Hallo,

Ik heb in een app een aparte View Controller gemaakt om een PDF te tonen. Dat werkt prima, alleen krijg ik in het debug venster de volgende melding op het moment dat de tweede View Controller voor het eerst control krijgt. De volgende keren komt de melding niet. Als ik er doorheen debug komt de melding ook niet.

2015-05-29 13Zelf zo'n smiley gebruiken? Typ dan :31: in je tekst en de rest gaat vanzelf! Kijk in het Woordenboek voor een overzicht van alle smileys.47.308 MatrixScore[98203:3284909] DiskImageCache: Could not resolve the absolute path of the old directory.

Verder gaat alles goed. Wat kan dit zijn?

Hier is de code die ik gebruik:

 

class PdfViewControler: UIViewController

{

  var webView: UIWebView!

 

  override func viewDidLoad()

  {

    super.viewDidLoad()

 

    let pdfUrl = NSURL(fileURLWithPath:NSBundle.mainBundle().pathForResource("HelpText", ofType:"pdf")!)

    let request = NSURLRequest(URL: pdfUrl!)

 

    webView = UIWebView(frame: CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height))

    webView.layer.position = CGPointMake(self.view.frame.width/2, self.view.frame.height/2)

    webView.loadRequest(request)

 

    self.view.addSubview(webView)

  }

 

  override func didReceiveMemoryWarning()

  {

    super.didReceiveMemoryWarning()

  }

}

Gr, Cor

 

Reageer


AppChanger  Laurens heeft nog geen Studiekaart. Klokje29 mei 2015, 20:32
Avatar
Avatar
Berichten:301
Fans:13


Hallo Cor,

Ik heb je code snel eens uitgetest en volgens mij is ze in orde. Ik krijg geen melding.

Volgens mij ligt het aan je PDF bestand. Kan het zijn dat je het niet hebt gekopieerd naar je project.

Hou me op de hoogte.

Update:

Alsik twee views plaats krijg ik net dezelfde melding als jou.

 

Met vriendelijke groeten,

Laurens

Reageer


Cor  Cor heeft nog geen Studiekaart. Klokje29 mei 2015, 21:48
Avatar
Avatar
Berichten:44


Hallo Laurens,

Ik heb je opmerking gecheckt, maar het pdf bestand staat echt goed. Het gekke is dat als ik regels code ga uitcommentarieren de melding op een gegeven moment verdwijnt, maar niet terug komt als ik de regels weer aan zet. Kan de segue van de hoofd view controller naar de pdf view controller er iets mee te maken hebben

gr, Cor

 

Reageer


AppChanger  Laurens heeft nog geen Studiekaart. Klokje29 mei 2015, 21:57
Avatar
Avatar
Berichten:301
Fans:13


Cor, 

Als ik de eerste viewcontroller verwijder, wordt de melding niet vertoont. Dus het ligt hem dus zeker hier aan. 

Ik zal er nog eens op mijn gemak naar kijken.

Met vriendelijke groeten,

Laurens

Reageer


David  David heeft nog geen Studiekaart. Klokje29 mei 2015, 23:32
Avatar
Avatar
Berichten:95

Leuk! 1 persoon vindt vindt dit leuk.

AppChanger  Laurens heeft nog geen Studiekaart. Klokje29 mei 2015, 23:33
Avatar
Avatar
Berichten:301
Fans:13


David,

deze code heb ik ondertussen al uitgeprobeerd, maar krijg dezelfde melding.

Met vriendelijke groeten,

Laurens

Reageer


David  David heeft nog geen Studiekaart. Klokje31 mei 2015, 19:11
Avatar
Avatar
Berichten:95


misschien helpt dit?


if
let pdf = NSBundle.mainBundle().URLForResource("HelpText", withExtension: "pdf", subdirectory: nil, localization: nil) {
let req = NSURLRequest(URL: pdf)
webView.layer.position = CGPointMake(self.view.frame.width/2, self.view.frame.height/2) webView.loadRequest(req) self.view.addSubview(webView) }


groetjes,


david
Reageer


AppChanger  Laurens heeft nog geen Studiekaart. Klokje31 mei 2015, 20:02
Avatar
Avatar
Berichten:301
Fans:13


Dag David,

Ook jouw code geeft dezelfde melding. Heb ze eens uitgetest, maar had dit ook al eens geprobeerd.

Nadien heb ik de code eens getest met xcode 6.4 beta, de eerste  keer kreeg ik geen melding, ook niet met echt device. Maar de keer daarop kreeg ik weer dezelfde melding. Als je de app eens verwijdert uit de Simulator, en dan opnieuw runt, is de melding weg. Als je de app stopt en dan weer runt, wordt de melding weer weergegeven.

Volgens mij is het een bug.

Met vriendelijke groeten,

Laurens

Reageer


Cor  Cor heeft nog geen Studiekaart. Klokje31 mei 2015, 21:13
Avatar
Avatar
Berichten:44


Ik heb ook al allerlei codevoorbeelden gebruikt. En nog geen oplossing gevonden.

Aan een bug heb ik wel gedacht, maat ik schatte de kans groter in dat ik een fout gemaakt heb.

Gr Cor

 

Reageer


AppChanger  Laurens heeft nog geen Studiekaart. Klokje31 mei 2015, 21:17
Avatar
Avatar
Berichten:301
Fans:13


Ik weet het niet meer nu, in principe kan het denk ik weinig kwaat, want het werkt. Maar zou natuurlijk beter zijn moest de melding niet meer verschijnen.

Misschien kan je eens proberen om de pdf al op te halen bij het starten. En dan steeds doorgeven aan je nieuwe view.

Gr Laurens

Reageer


Cor  Cor heeft nog geen Studiekaart. Klokje01 jun 2015, 09:49
Avatar
Avatar
Berichten:44


Hoi Laurens,

Ik laad de pdf nu in de viewDidLoad van de main ViewController. Ik de prepareForSegue zet ik de webView klaar en in de pdfViewController doe ik alleen nog maar een   addSubview, maar de melding blijft komen.

Bedankt voor je hulp.

Gr Cor

 

Reageer


AppChanger  Laurens heeft nog geen Studiekaart. Klokje01 jun 2015, 12:25
Avatar
Avatar
Berichten:301
Fans:13


Hallo Cor, 

Geen probleem! Ik zal het nog eens bekijken.

 

Met vriendelijke groeten,

Laurens

Reageer


Cor  Cor heeft nog geen Studiekaart. Klokje02 jun 2015, 07:04
Avatar
Avatar
Berichten:44


Ik wilde mijn project eigenlijk toch al renamen en daarom heb ik alles vanaf het begin opnieuw opgezet. Voor het aanbrengen van de segue heb ik exact de video van Roelf gevolgd met als resultaat: dezelfde melding.

Jammer, maar helaas,

Gr Cor

 

Reageer


Admin Roelf  Klokje02 jun 2015, 07:29
Avatar


Cor, ik kijk later deze week (waarschijnlijk donderdag of vrijdag) ook nog even naar deze melding. Interessant probleem om eens in te duiken :)

Alsnog gefeliciteerd met je eerste app, overigens!

Reageer

Leuk! 1 persoon vindt vindt dit leuk.

Cor  Cor heeft nog geen Studiekaart. Klokje03 jun 2015, 10:15
Avatar
Avatar
Berichten:44


Dank je Roelf!

Nog mijn complimenten over de laatste video van UIKit in de praktijk. Het wordt nu echt heel interessant.

Het zou fijn zijn als je iets over die fout kunt vinden. De melding komt vrij veel voor als je er op Googlet, maar een oplossing heb ik nog niet.

Gr Cor

 

Reageer


Admin Roelf  Klokje08 jun 2015, 10:01
Avatar


Cor, de reden hiervoor is dat de 'browser' die door WebViews wordt gebruikt (WebKit) altijd probeert om te cachen. De enige manier om dat uit te zetten, is met behulp van een NSUserDefaults-property: een bool met de naam WebKitDiskImageCacheEnabled. Die property heeft normaal gesproken de waarde true. Als je hem uitzet (hoef je maar één keer te doen, daarna blijft die instelling voor je app bewaard), wordt je PDF altijd opnieuw geladen en kijkt WebKit niet meer naar de cache.

Zet na super.viewDidLoad() de volgende regel:

NSUserDefaults.standardUserDefaults().setBool(false, forKey: "WebKitDiskImageCacheEnabled")

Daarna is je probleem opgelost; WebKit zal voor deze app niet meer naar de cache kijken.

Succes!

 

Reageer

Goed advies! 1 persoon vindt dit goed advies.

Cor  Cor heeft nog geen Studiekaart. Klokje08 jun 2015, 10:55
Avatar
Avatar
Berichten:44


Beste Roelf,

Het werkt inderdaad. Heel erg bedankt!!

Met vriendelijke groeten,

Cor Mom

 

Reageer

Leuk! 1 persoon vindt vindt dit leuk.