iOS12 update appears to break FileChooser::isPlatformDialogAvailable()


My app uses a native file chooser. All is/was fine on iOS11. It continues to work just fine.

With the update to iOS 12 though, now FileChooser::isPlatformDialogAvailable() returns false on iOS12 devices.

Is there some new project configuration to be aware of to make this work on iOS12?


No, it should work as expected. I’ve just tried this with a device running iOS 12.0.1 and native FileChoosers are working fine.

That method only returns false if the JUCE_DISABLE_NATIVE_FILECHOOSERS flag is set - have you defined it somewhere?


What device did you try it on?

This is still an issue for me.

For me, it shows up on an iPhone 6s+, and an iPhone 7 which I recently updated to 12.0.1. It doesn’t show up on the 4 other iOS devices that I have which are also iOS 12. I have absolutely no idea why… it used to work just fine on those two devices before the upgrade.


I tested it on a 6s. I’ll try to get hold of one of those devices and test it out.


Newer devices are working fine for me too. Are you able to reproduce this with a simple test app? Here’s the PIP that I am using to test it out:

 The block below describes the properties of this PIP. A PIP is a short snippet
 of code that can be read by the Projucer and used to generate a JUCE project.


  name:             iOSNativeFileBrowser
  vendor:           JUCE

  dependencies:     juce_core, juce_data_structures, juce_events, juce_graphics, juce_gui_basics
  exporters:        xcode_iphone

  type:             Component
  mainClass:        MyComponent



#pragma once

class MyComponent   : public Component
        addAndMakeVisible (showFileChooserButton);
        showFileChooserButton.onClick = [this]
            FileChooser chooser ("FileChooser");
            if (chooser.browseForDirectory())
                DBG (chooser.getResult().getFullPathName());
        setSize (600, 400);


    void paint (Graphics& g) override
        g.fillAll (getLookAndFeel().findColour (ResizableWindow::backgroundColourId));

    void resized() override
        showFileChooserButton.centreWithSize (250, 35);

    TextButton showFileChooserButton { "Show file chooser" };



I can confirm that with the above pip, it works just fine on an iPhone X and an iPad mini 2, and does not work on an iPhone 6s+ or an iPhone 7.

See screenshots - first is obviously the 6s+, second is the X.