Page 1 of 1

Android Touch Input Not Working in NoesisGUI (Works on Windows)

Posted: 06 Aug 2025, 21:30
by roozbehid
Im using NoesisGUI inside Unreal Engine 5.6 and I'm having trouble with basic UI interaction on Android

What Works:
- Running on windows (either in editor or stand alone) builds, everything works fine
- Buttons respons to my click and show visual press feedback or actions set on them
- No custom code is used

On Android Phone experience:
- UI Renders correctly in Phone/Android
- I put a timer action just to make sure overall that works and that worked
- No touch interaction works, feels like a disabled page
- I set breakpoins and I can see in NoesisInstance.cpp HandleMouseButtonDownEvent is called, but it doesnt do `NoesisInstance->NativeOnMouseButtonDown(MyGeometry, InPointerEvent)` because it is not a 3d widget
- If using debugger, I jump code to `NoesisInstance->NativeOnMouseButtonDown(MyGeometry, InPointerEvent)` and run it, my button key press event then works!

My sample xaml file
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:b="http://schemas.microsoft.com/xaml/behaviors"
        mc:Ignorable="d" d:DataContext="MyStructure000 Data 02" Focusable="True" IsManipulationEnabled="True" AllowDrop="True" FocusManager.IsFocusScope="True" IsFocusEngagementEnabled="True" IsFocusEngaged="True"  d:DesignWidth="720" d:DesignHeight="1280">

    <Grid>
        <VisualStateManager.VisualStateGroups>
            <VisualStateGroup x:Name="VisualStateGroup0">
                <VisualState x:Name="VisualState0">
                    <Storyboard>
                        <StringAnimationUsingKeyFrames Storyboard.TargetName="TextBlock0" Storyboard.TargetProperty="(TextBlock.Text)">
                            <DiscreteStringKeyFrame KeyTime="00:00:00" Value="Default"/>
                            <DiscreteStringKeyFrame KeyTime="00:00:01" Value="TimerChanged"/>
                        </StringAnimationUsingKeyFrames>
                    </Storyboard>
                </VisualState>
            </VisualStateGroup>
        </VisualStateManager.VisualStateGroups>
        <b:Interaction.Triggers>
            <b:TimerTrigger TotalTicks="1000">
                <b:GoToStateAction StateName="VisualState0"/>
            </b:TimerTrigger>
        </b:Interaction.Triggers>
       
        <Grid.RowDefinitions>
            <RowDefinition Height="48*"/>
            <RowDefinition Height="32*"/>
        </Grid.RowDefinitions>
        <!-- Hidden element to track index -->
        
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="1*"/>
            <ColumnDefinition Width="2*"/>
            <ColumnDefinition Width="1*"/>
        </Grid.ColumnDefinitions>
        
        
        
        <TextBlock x:Name="TextBlock0" Text="Default" TextWrapping="Wrap" Foreground="#FF3078C0" Margin="0" Grid.Row="1" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="43"/>
        <Button x:Name="Button1" Grid.Column="1" Width="200" Height="80" Content="Hello click on me" Margin="0">
            <b:Interaction.Triggers>
                <b:EventTrigger EventName="Click">
                    <b:ChangePropertyAction PropertyName="Content" Value="Clicked"/>
                </b:EventTrigger>
                <b:EventTrigger EventName="Tapped">
                    <b:ChangePropertyAction PropertyName="Content" Value="Tapped"/>
                </b:EventTrigger>
                <b:EventTrigger EventName="MouseDown">
                    <b:ChangePropertyAction PropertyName="Content" Value="MouseDown"/>
                </b:EventTrigger>
                <b:EventTrigger EventName="PreviewMouseDown">
                    <b:ChangePropertyAction PropertyName="Content" Value="PreviousMouseDown"/>
                </b:EventTrigger>
                <b:EventTrigger EventName="TouchDown">
                    <b:ChangePropertyAction PropertyName="Content" Value="TouchDown"/>
                </b:EventTrigger>
            </b:Interaction.Triggers>
            <Button.Triggers>
                <EventTrigger RoutedEvent="Button.Click">
                </EventTrigger>
            </Button.Triggers>
        </Button>
    </Grid>
</Page>
and I just clicked on xaml asset and used "Add to viewport" logic to add it to blank level.

Re: Android Touch Input Not Working in NoesisGUI (Works on Windows)

Posted: 11 Aug 2025, 18:51
by roozbehid
Answering my own question,
it seems you need call
SetVisibility(ESlateVisibility::Visible)
on your created component.Although it works fine in Windows, this step was needed for me in Android somehow

Re: Android Touch Input Not Working in NoesisGUI (Works on Windows)

Posted: 12 Aug 2025, 09:33
by hcpizzi
Hi,

Sorry for the lack of response on our side. I'm looking at your solution and our code and I think I know the reason for this. Thanks for posting your solution. Yes, it looks like the default value of SelfHitTestInvisible could have undesirable effects on touch only platforms.

Your solution will work unless you want to interact with objects in the viewport through empty parts of your UI. In any case, I'll look into fixing this right away.

Thank you once more!

Re: Android Touch Input Not Working in NoesisGUI (Works on Windows)

Posted: 12 Aug 2025, 14:15
by jsantos
Thanks @hcpizzi.

@roozbehid, do you mind creating a ticket for this?

Re: Android Touch Input Not Working in NoesisGUI (Works on Windows)

Posted: 14 Aug 2025, 11:52
by fondnone
Im using NoesisGUI inside Unreal Engine 5.6 and I'm having trouble with basic UI interaction on Android

What Works:
- Running on windows (either in editor or stand alone) builds, everything works fine
- Buttons respons to my click and show visual press basketball stars feedback or actions set on them
- No custom code is used

On Android Phone experience:
- UI Renders correctly in Phone/Android
- I put a timer action just to make sure overall that works and that worked
- No touch interaction works, feels like a disabled page
- I set breakpoins and I can see in NoesisInstance.cpp HandleMouseButtonDownEvent is called, but it doesnt do `NoesisInstance->NativeOnMouseButtonDown(MyGeometry, InPointerEvent)` because it is not a 3d widget
- If using debugger, I jump code to `NoesisInstance->NativeOnMouseButtonDown(MyGeometry, InPointerEvent)` and run it, my button key press event then works!

My sample xaml file
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:b="http://schemas.microsoft.com/xaml/behaviors"
        mc:Ignorable="d" d:DataContext="MyStructure000 Data 02" Focusable="True" IsManipulationEnabled="True" AllowDrop="True" FocusManager.IsFocusScope="True" IsFocusEngagementEnabled="True" IsFocusEngaged="True"  d:DesignWidth="720" d:DesignHeight="1280">

    <Grid>
        <VisualStateManager.VisualStateGroups>
            <VisualStateGroup x:Name="VisualStateGroup0">
                <VisualState x:Name="VisualState0">
                    <Storyboard>
                        <StringAnimationUsingKeyFrames Storyboard.TargetName="TextBlock0" Storyboard.TargetProperty="(TextBlock.Text)">
                            <DiscreteStringKeyFrame KeyTime="00:00:00" Value="Default"/>
                            <DiscreteStringKeyFrame KeyTime="00:00:01" Value="TimerChanged"/>
                        </StringAnimationUsingKeyFrames>
                    </Storyboard>
                </VisualState>
            </VisualStateGroup>
        </VisualStateManager.VisualStateGroups>
        <b:Interaction.Triggers>
            <b:TimerTrigger TotalTicks="1000">
                <b:GoToStateAction StateName="VisualState0"/>
            </b:TimerTrigger>
        </b:Interaction.Triggers>
       
        <Grid.RowDefinitions>
            <RowDefinition Height="48*"/>
            <RowDefinition Height="32*"/>
        </Grid.RowDefinitions>
        <!-- Hidden element to track index -->
        
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="1*"/>
            <ColumnDefinition Width="2*"/>
            <ColumnDefinition Width="1*"/>
        </Grid.ColumnDefinitions>
        
        
        
        <TextBlock x:Name="TextBlock0" Text="Default" TextWrapping="Wrap" Foreground="#FF3078C0" Margin="0" Grid.Row="1" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="43"/>
        <Button x:Name="Button1" Grid.Column="1" Width="200" Height="80" Content="Hello click on me" Margin="0">
            <b:Interaction.Triggers>
                <b:EventTrigger EventName="Click">
                    <b:ChangePropertyAction PropertyName="Content" Value="Clicked"/>
                </b:EventTrigger>
                <b:EventTrigger EventName="Tapped">
                    <b:ChangePropertyAction PropertyName="Content" Value="Tapped"/>
                </b:EventTrigger>
                <b:EventTrigger EventName="MouseDown">
                    <b:ChangePropertyAction PropertyName="Content" Value="MouseDown"/>
                </b:EventTrigger>
                <b:EventTrigger EventName="PreviewMouseDown">
                    <b:ChangePropertyAction PropertyName="Content" Value="PreviousMouseDown"/>
                </b:EventTrigger>
                <b:EventTrigger EventName="TouchDown">
                    <b:ChangePropertyAction PropertyName="Content" Value="TouchDown"/>
                </b:EventTrigger>
            </b:Interaction.Triggers>
            <Button.Triggers>
                <EventTrigger RoutedEvent="Button.Click">
                </EventTrigger>
            </Button.Triggers>
        </Button>
    </Grid>
</Page>
and I just clicked on xaml asset and used "Add to viewport" logic to add it to blank level.
I'm having the same problem. Please let us know how you solved it!

Re: Android Touch Input Not Working in NoesisGUI (Works on Windows)

Posted: 15 Aug 2025, 12:53
by jsantos
There is a workaround mentioned above. Please create a ticket so this can be tracked and solved.