UI Navigation not selecting UI objects if on another page

Hi, I’m sort of making topics to the forum, so I’m not entirely sure where this is meant to go but:

I’m currently remaking some of the UI for a game called “I Wanna Be The Bloxxer”, or “I Wanna Test The Game”. You may have heard of it from popular content creators, but that isn’t important right now.

For whatever reason, UI Navigation seems to be really inconsistent when it comes to UIPageLayouts being used for them.

When purchasing an item, a pop up is meant to appear, prompting the player to confirm their purchase. I was recently tasked with fixing the console support for it, since people had said that it’s difficult to use on it. All the buttons here are selectable, including on the confirmation pop up, but whenever I try to navigate to it, it doesn’t select at all. The only exception to this is when I go to the first page, where the buttons to navigate to the other pages are, and it’s got me confused. Does anyone know whether or not there’s a fix to this, or whether this is a bug with studio on its own?

I’ve looked around elsewhere to see if anybody has had any issue with not being able to select objects, and the closest was a resolved bug involving the ClipDescendants property.

When opening popups you want to focus the navigator on it, to do so you first need to make sure SelectionGroup is set to true on the popup frame, then make all SelectionBehavior’s be Stop (this will make sure that when you are navigating over the popup, you wont be able to leave the popup until it closes).
Now when you are prompting the player with a popup you should do:

local GuiService = game:GetService("GuiService")

if GuiService.SelectedObject then --check if navigator is enabled
	GuiService:Select(popup) --move navigator to the popup frame
end

or if you want to make navigator default to some button within the popup:

if GuiService.SelectedObject then
    --move navigator to the button you want selected by default
	GuiService.SelectedObject = defaultButton 
end

Also if you have any buttons that are invisible or simply don’t want the navigator to be able to select them make sure their Selectable property is set to false.

I was about to mark this as a solution, but when I had to re-record it because I had the wrong window open, the results seemed really inconsistent. It selects a completely irrelevant object, instead of the frame I’m trying to set it to, and it also sometimes jumps to a completely different page, but I think that may just be a page issue.

Is there any warnings or errors in the output?
When using GuiService:Select(object), the navigator will find first Selectable object within the object you provided and select it. When using GuiService.SelectedObject = object, the object you set it to has to be Selectable otherwise it will give you a warning and move the navigator to the first valid object on the screen (which appears to be happening in your case).
You also need to make sure the buttons within the popup are Selectable.

Few more things to note:
You can only select objects that are visible and on the screen (they can be selected if their Transparency is set to 1), so you have to make sure that the popup is visible before trying to move the navigator to it.

Its possible that you can’t select the popup because you are trying to put the navigator on it the moment you open it while its still too small where buttons aren’t yet on screen, to fix that you can wait til the popup animation finishes before trying to move the navigator to it.

The issue was indeed the popup not being big enough when I was trying to select it, so I put a delay on it before it set, so it should work now. Thank you!