I take back the first part of my last comment. You cannot fix this by using a loop. I looked into this further for another topic. is_singular() does not look at the current posts, it looks and the main/global $wp_query.
You must use my second option
Welcome to the Advanced Custom Fields community forum.
Browse through ideas, snippets of code, questions and answers between fellow ACF users