Skip to content

[iOS] Respect InputTransparent when updating UserInteractionEnabled - #36305

Merged
kubaflo merged 2 commits into
inflight/currentfrom
jfversluis-fix-ios-inputtransparent-isenabled
Jul 3, 2026
Merged

[iOS] Respect InputTransparent when updating UserInteractionEnabled#36305
kubaflo merged 2 commits into
inflight/currentfrom
jfversluis-fix-ios-inputtransparent-isenabled

Conversation

@jfversluis

@jfversluis jfversluis commented Jul 2, 2026

Copy link
Copy Markdown
Member

Note

Are you waiting for the changes in this PR to be merged?
It would be very helpful if you could test the resulting artifacts from this PR and let us know in a comment if this change resolves your issue. Thank you!

Description of Change

Updates the iOS ViewExtensions.UpdateIsEnabled path for non-UIControl views to respect InputTransparent when setting UserInteractionEnabled. This prevents an InputTransparent="True" layout from becoming touch-blocking after a parent IsEnabled toggle, while preserving the previous fix that disabled non-UIControl views should not receive interactions.

Also keeps iOS/Mac Catalyst wrapper/container hit testing synchronized when IsEnabled changes or when a container is created, so IsEnabled and InputTransparent remain consistent regardless of mapper order.

@janne-hmp, once this PR publishes build artifacts, could you please verify them with the repro/GnollHack flow from #36059 and confirm whether SKCanvasView/SKGLView receive taps again after toggling the parent Grid.IsEnabled?

Issues Fixed

Fixes #36059
Keeps the behavior fixed by #31403 / #19771.

Validation

  • dotnet build Microsoft.Maui.BuildTasks.slnf
  • dotnet build src/Core/tests/DeviceTests/Core.DeviceTests.csproj -p:TargetFramework=net10.0-ios -p:RuntimeIdentifier=iossimulator-arm64 --no-restore
  • Added iOS Core device-test coverage for IsEnabled, InputTransparent, and wrapper/container hit-testing combinations.

Respect InputTransparent when updating UserInteractionEnabled for non-UIControl iOS views so parent IsEnabled toggles do not make transparent layouts block touches. Keep disabled non-UIControl views from receiving interactions.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings July 2, 2026 14:36
@github-actions

github-actions Bot commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

🚀 Dogfood this PR with:

⚠️ WARNING: Do not do this without first carefully reviewing the code of this PR to satisfy yourself it is safe.

curl -fsSL https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.sh | bash -s -- 36305

Or

  • Run remotely in PowerShell:
iex "& { $(irm https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.ps1) } 36305"

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates iOS platform view mapping so UserInteractionEnabled for non-UIControl views stays consistent with both IsEnabled and InputTransparent, preventing InputTransparent="True" layouts/views from becoming touch-blocking after IsEnabled toggles.

Changes:

  • iOS: UpdateIsEnabled for non-UIControl views now sets UserInteractionEnabled = IsEnabled && !InputTransparent.
  • iOS: UpdateInputTransparent for non-UIControl views now also incorporates IsEnabled to avoid mapper-order inconsistencies.
  • Adds an iOS-specific unit test file intended to cover UpdateIsEnabled/UpdateInputTransparent combinations for UIView and LayoutView.
Show a summary per file
File Description
src/Core/src/Platform/iOS/ViewExtensions.cs Adjusts iOS interaction enablement logic for non-UIControl views to respect both IsEnabled and InputTransparent, including mapper-order consistency.
src/Core/tests/UnitTests/ViewExtensionsIOSTests.cs Adds tests for the new iOS interaction behavior (note: currently gated by #if IOS).

Copilot's findings

  • Files reviewed: 2/2 changed files
  • Comments generated: 1

Comment on lines +3 to +7
#if IOS
using Microsoft.Maui.Handlers;
using Microsoft.Maui.Platform;
using UIKit;
#endif
@github-actions github-actions Bot added area-controls-general General issues that span multiple controls, or common base classes such as View or Element platform/ios labels Jul 2, 2026
@kubaflo

This comment has been minimized.

@github-actions github-actions Bot added the s/agent-review-in-progress AI review is currently running for this PR label Jul 2, 2026
@janne-hmp

Copy link
Copy Markdown

Sure, I can have a look.

@MauiBot MauiBot left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Expert Review — 2 findings

See inline comments for details.

{
// Non-UIControl views (like UICollectionView) only get interaction disable
platformView.UserInteractionEnabled = view.IsEnabled;
platformView.UserInteractionEnabled = view.IsEnabled && !view.InputTransparent;

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔍 AI-Generated Review (multi-model)

[major] Handler Mapper and Property Patterns — This makes wrapper UserInteractionEnabled depend on IsEnabled, but ViewHandler.MapIsEnabled only remaps PlatformView, while MapInputTransparent remaps both the iOS WrapperView container and PlatformView. Concrete failing sequence: a wrapped view with InputTransparent=false is disabled, MapInputTransparent sets the wrapper non-interactive (IsEnabled && !InputTransparent); when the view is later re-enabled, MapIsEnabled updates only the platform view, leaving the wrapper stale and hit-testing still blocked. Please synchronize the iOS/MacCatalyst container whenever IsEnabled changes (and when a container is created), e.g. by centralizing wrapper interaction mapping and calling it from MapIsEnabled, MapInputTransparent, and MapContainerView.

@@ -0,0 +1,91 @@
using Xunit;

#if IOS

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔍 AI-Generated Review (multi-model)

[major] Regression Prevention and Test Coverage — These tests are compiled only when the IOS symbol is defined, but Core.UnitTests is built as the shared net10.0 unit-test assembly in the saved gate logs, so the filter matched zero tests and this file provides no effective regression coverage. Move this coverage to the iOS Core device-test infrastructure or otherwise ensure the test project targets an iOS TFM so the regression actually runs.

@MauiBot MauiBot added s/agent-gate-failed AI could not verify tests catch the bug s/agent-fix-pr-picked AI could not beat the PR fix - PR is the best among all candidates s/agent-reviewed PR was reviewed by AI agent workflow (full 4-phase review) labels Jul 2, 2026
MauiBot

This comment was marked as outdated.

@MauiBot MauiBot removed the s/agent-review-in-progress AI review is currently running for this PR label Jul 2, 2026
@janne-hmp

Copy link
Copy Markdown

@jfversluis I now tested this with GnollHack directly, and it does work, that is, (1) with the MainGrid.IsEnabled commands being back in to FadeToBlack and FadeFromBlack and (2) using the build artifacts from this pull request (GnollHack says the version of the MAUI is then 10.0.90). So I strongly believe the issue has been now fixed. I think @MauiBot might have had some additional suggestions, though.

Synchronize container hit testing when IsEnabled changes or a container is created. Move iOS interaction coverage from shared unit tests into Core device tests so the iOS target compiles it.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@jfversluis

Copy link
Copy Markdown
Member Author

@janne-hmp thank you for verifying the first artifact build. I pushed a follow-up commit to address the automated review feedback: wrapper/container hit testing is now synchronized when IsEnabled changes or when a container is created, and the coverage moved into iOS Core device tests so CI can compile it.

Because this changes the related iOS hit-testing mapper path and will produce new artifacts, could you please retest the latest artifacts once the new build is available and confirm the GnollHack/#36059 flow still works?

@janne-hmp

Copy link
Copy Markdown

@jfversluis Sure, I can check the situation with the new artifacts too when they are available.

@janne-hmp

Copy link
Copy Markdown

@jfversluis I tested this again with the new artifacts ending .56 (and made sure to clear the nuget cache), and the fix still works when I enable MainGrid.IsEnabled statements. So it looks like that the issue has been fixed, and I believe @MauiBot should be satisfied now, too.

@kubaflo

kubaflo commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

/azp run

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 3 pipeline(s).

@jfversluis

This comment has been minimized.

@github-actions github-actions Bot added the s/agent-ready-for-rerun AI review has a new PR-author comment or commit and is ready for rerun label Jul 3, 2026
@MauiBot MauiBot added s/agent-gate-passed AI verified tests catch the bug (fail without fix, pass with fix) and removed s/agent-gate-failed AI could not verify tests catch the bug labels Jul 3, 2026

@MauiBot MauiBot left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AI Review Summary

@jfversluis — new AI review results are available based on this last commit: 0eba45a. To request a fresh review after new comments or commits, comment /review rerun.

Gate Passed Confidence Low Platform iOS


🗂️ Review Sessions — click to expand
🚦 Gate — Test Before & After Fix

Gate Result: ✅ PASSED

Platform: IOS · Base: main · Merge base: 39af9158

Test Without Fix (expect FAIL) With Fix (expect PASS)
📱 ViewHandlerTests (NonUIControlDisablesUserInteractionWhenIsEnabledFalse, NonUIControlKeepsInputTransparentAfterIsEnabledToggles, ContainerUserInteractionTracksIsEnabledAndInputTransparent) Category=View ✅ FAIL — 358s ✅ PASS — 224s
🔴 Without fix — 📱 ViewHandlerTests (NonUIControlDisablesUserInteractionWhenIsEnabledFalse, NonUIControlKeepsInputTransparentAfterIsEnabledToggles, ContainerUserInteractionTracksIsEnabledAndInputTransparent): FAIL ✅ · 358s

(truncated to last 15,000 chars)

26-07-03 02:29:01.082725-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.0843130]    at Microsoft.Maui.DeviceTests.ViewHandlerTests.ContainerUserInteractionTracksIsEnabledAndInputTransparent(Boolean inputTransparent, Boolean expectedWhenEnabled)
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.0843190] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.0843230] 2026-07-03 02:29:01.082829-0700 Microsoft.Maui.Core.DeviceTests[6577:43188]    Execution time: 0.003594
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.0843270] 2026-07-03 02:29:01.082910-0700 Microsoft.Maui.Core.DeviceTests[6577:43188]    Test trait name: Category
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.0843310] 2026-07-03 02:29:01.082988-0700 Microsoft.Maui.Core.DeviceTests[6577:43188]       value: View
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.0843340] 2026-07-03 02:29:01.083103-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] 	[FAIL] ContainerUserInteractionTracksIsEnabledAndInputTransparent
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.0843360] 2026-07-03 02:29:01.083207-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] 	[FAIL] ContainerUserInteractionTracksIsEnabledAndInputTransparent   Test name: ContainerUserInteractionTracksIsEnabledAndInputTransparent(inputTransparent: False, expectedWhenEnabled: True)   Test case: ContainerUserInteractionTracksIsEnabledAndInputTransparent
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.0843410]    Assembly:  [Microsoft.Maui.Core.DeviceTests, Version=10.0.0.0, Culture=neutral, PublicKeyToken=null]
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.0843530]    Exception messages: Assert.False() Failure
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.0843570] Expected: False
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.0843600] 2026-07-03 02:29:01.083285-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] Actual:   True   Exception stack traces:    at Microsoft.Maui.DeviceTests.ViewHandlerTests.<>c__DisplayClass10_0.<ContainerUserInteractionTracksIsEnabledAndInputTransparent>b__0()
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.0843640]    at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass1_0.<DispatchAsync>b__0()
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.0843670] 2026-07-03 02:29:01.083491-0700 Microsoft.Maui.Core.DeviceTests[6577:43188]    at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass0_0`1[[System.Boolean, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].<DispatchAsync>b__0()
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.0843710] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.0843790] 2026-07-03 02:29:01.083622-0700 Microsoft.Maui.Core.DeviceTests[6577:43188]    at Microsoft.Maui.DeviceTests.ViewHandlerTests.ContainerUserInteractionTracksIsEnabledAndInputTransparent(Boolean inputTransparent, Boolean expectedWhenEnabled)
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.0843830] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.0843870]    Execution time: 0.003594
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.0843900]    Test trait name: Category
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.0843920]       value: View
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.0847470] 2026-07-03 02:29:01.084530-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] 	[PASS] ContainerUserInteractionTracksIsEnabledAndInputTransparent
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.0894730] 2026-07-03 02:29:01.089223-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] 	[PASS] ToolTipTextAppliedToLabel
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.0953390] 2026-07-03 02:29:01.095006-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] 	[PASS] ToolTipTextAppliedToLabel
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.0977390] 2026-07-03 02:29:01.097503-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] 	[PASS] ToolTipTextAppliedToImage
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.0987590] 2026-07-03 02:29:01.098523-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] 	[PASS] ToolTipTextAppliedToImage
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.0998130] 2026-07-03 02:29:01.099602-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] 	[PASS] NonUIControlDisablesUserInteractionWhenIsEnabledFalse
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.3441920] 2026-07-03 02:29:01.343713-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] 	[PASS] Semantic Heading is set correctly
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.3508120] 2026-07-03 02:29:01.350327-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] 	[PASS] Native View Bounds are not empty
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.3556150] 2026-07-03 02:29:01.355285-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] 	[PASS] Native View Bounds are not empty
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.3579960] 2026-07-03 02:29:01.357647-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] 	[PASS] Native View Bounds are not empty
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.3585890] 2026-07-03 02:29:01.358247-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] 	[IGNORED] View Renders To Image
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.3614700] 2026-07-03 02:29:01.360622-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] 	[PASS] DisconnectHandlerDoesntCrash
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.3649400] 2026-07-03 02:29:01.364616-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] 	[PASS] Subsequent PlatformArrange triggers MapFrame
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.3680920] 2026-07-03 02:29:01.367207-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] 	[PASS] ToolTipTextAppliedToButton
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.3693800] 2026-07-03 02:29:01.368938-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] 	[PASS] ToolTipTextAppliedToButton
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6542220] 2026-07-03 02:29:01.653909-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] 	[PASS] ContainerView Adds And Removes
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6615260] 2026-07-03 02:29:01.661262-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] 	[PASS] PlatformView Transforms are not empty
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6624630] 2026-07-03 02:29:01.662272-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] 	[PASS] PlatformView Transforms are not empty
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6638890] 2026-07-03 02:29:01.663487-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] 	[PASS] PlatformView Transforms are not empty
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6709030] 2026-07-03 02:29:01.670649-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] 	[PASS] Scale initializes correctly
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6713830] 2026-07-03 02:29:01.671213-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] 	[PASS] Scale initializes correctly
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6718310] 2026-07-03 02:29:01.671671-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] 	[PASS] Scale initializes correctly
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6724150] 2026-07-03 02:29:01.672170-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] 	[PASS] Scale initializes correctly
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6744150] 2026-07-03 02:29:01.674164-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] 	[PASS] Scale initializes correctly
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6749370] 2026-07-03 02:29:01.674747-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] 	[PASS] Scale initializes correctly
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6764260] 2026-07-03 02:29:01.676207-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] 	[PASS] Scale initializes correctly
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6773310] 2026-07-03 02:29:01.677151-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] 	[PASS] Scale initializes correctly
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6820050] 2026-07-03 02:29:01.681770-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] 	[PASS] Scale initializes correctly
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6832180] 2026-07-03 02:29:01.682940-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] Microsoft.Maui.DeviceTests.ViewHandlerTests 1.1910215 ms
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6853790] 2026-07-03 02:29:01.685151-0700 Microsoft.Maui.Core.DeviceTests[6577:44099] Failed tests:
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6855060] 2026-07-03 02:29:01.685282-0700 Microsoft.Maui.Core.DeviceTests[6577:44099] 1) 	[FAIL] NonUIControlKeepsInputTransparentAfterIsEnabledToggles   Test name: NonUIControlKeepsInputTransparentAfterIsEnabledToggles
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6855410]    Assembly:  [Microsoft.Maui.Core.DeviceTests, Version=10.0.0.0, Culture=neutral, PublicKeyToken=null]
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6856570] 2026-07-03 02:29:01.685491-0700 Microsoft.Maui.Core.DeviceTests[6577:44099]    Exception messages: Assert.False() Failure
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6856790] Expected: False
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6856840] Actual:   True   Exception stack traces:    at Microsoft.Maui.DeviceTests.ViewHandlerTests.<>c__DisplayClass9_0.<NonUIControlKeepsInputTransparentAfterIsEnabledToggles>b__0()
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6857730] 2026-07-03 02:29:01.685616-0700 Microsoft.Maui.Core.DeviceTests[6577:44099]    at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass1_0.<DispatchAsync>b__0()
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6858430] 2026-07-03 02:29:01.685702-0700 Microsoft.Maui.Core.DeviceTests[6577:44099]    at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass0_0`1[[System.Boolean, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].<DispatchAsync>b__0()
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6858520] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6858570]    at Microsoft.Maui.DeviceTests.ViewHandlerTests.NonUIControlKeepsInputTransparentAfterIsEnabledToggles()
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6858610] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6858660]    Execution time: 0.0049635
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6859320] 2026-07-03 02:29:01.685762-0700 Microsoft.Maui.Core.DeviceTests[6577:44099]    Test trait name: Category
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6859500]       value: View
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6860870] 2026-07-03 02:29:01.685857-0700 Microsoft.Maui.Core.DeviceTests[6577:44099] 2) 	[FAIL] ContainerUserInteractionTracksIsEnabledAndInputTransparent   Test name: ContainerUserInteractionTracksIsEnabledAndInputTransparent(inputTransparent: False, expectedWhenEnabled: True)   Test case: ContainerUserInteractionTracksIsEnabledAndInputTransparent
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6861380]    Assembly:  [Microsoft.Maui.Core.DeviceTests, Version=10.0.0.0, Culture=neutral, PublicKeyToken=null]
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6861490]    Exception messages: Assert.False() Failure
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6861570] Expected: False
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6861900] 2026-07-03 02:29:01.685999-0700 Microsoft.Maui.Core.DeviceTests[6577:44099] Actual:   True   Exception stack traces:    at Microsoft.Maui.DeviceTests.ViewHandlerTests.<>c__DisplayClass10_0.<ContainerUserInteractionTracksIsEnabledAndInputTransparent>b__0()
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6862600]    at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass1_0.<DispatchAsync>b__0()
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6862740] 2026-07-03 02:29:01.686106-0700 Microsoft.Maui.Core.DeviceTests[6577:44099]    at Microsoft.Maui.Dispatching.DispatcherExtensions.<>c__DisplayClass0_0`1[[System.Boolean, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].<DispatchAsync>b__0()
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6862810] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6864310] 2026-07-03 02:29:01.686204-0700 Microsoft.Maui.Core.DeviceTests[6577:44099]    at Microsoft.Maui.DeviceTests.ViewHandlerTests.ContainerUserInteractionTracksIsEnabledAndInputTransparent(Boolean inputTransparent, Boolean expectedWhenEnabled)
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6864700] --- End of stack trace from previous location ---
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6864830]    Execution time: 0.003594
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6864910]    Test trait name: Category
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6864980]       value: View
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6871110] 2026-07-03 02:29:01.686963-0700 Microsoft.Maui.Core.DeviceTests[6577:44099] Tests run: 69 Passed: 66 Inconclusive: 0 Failed: 2 Ignored: 1
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6932740] 2026-07-03 02:29:01.692936-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] Xml file was written to the provided writer.
�[40m�[37mdbug�[39m�[22m�[49m: [02:29:01.6935340] 2026-07-03 02:29:01.693197-0700 Microsoft.Maui.Core.DeviceTests[6577:43188] Tests run: 1153 Passed: 66 Inconclusive: 0 Failed: 2 Ignored: 1085
�[40m�[37mdbug�[39m�[22m�[49m: ==================== End of ApplicationLog ====================
�[40m�[37mdbug�[39m�[22m�[49m: 
�[40m�[32minfo�[39m�[22m�[49m: Uninstalling the application 'com.microsoft.maui.core.devicetests' from 'iPhone 11 Pro'
�[40m�[37mdbug�[39m�[22m�[49m: 
�[40m�[37mdbug�[39m�[22m�[49m: Running /Applications/Xcode_26.0.1.app/Contents/Developer/usr/bin/simctl
�[40m�[37mdbug�[39m�[22m�[49m: Process simctl exited with 0
�[40m�[32minfo�[39m�[22m�[49m: Application 'com.microsoft.maui.core.devicetests' was uninstalled successfully
�[40m�[32minfo�[39m�[22m�[49m: <<XHARNESS_RESULT_START>>
      {
        "version": 1,
        "machineName": "K206DNJGQ1-1",
        "exitCode": 1,
        "exitCodeName": "TESTS_FAILED",
        "platform": "apple",
        "device": "iPhone 11 Pro",
        "deviceOsVersion": "26.0",
        "files": [
          {
            "name": "test-ios-simulator-64_26.0-56B15D00-C97A-4625-B7E5-20814CAA4AC9.log",
            "type": "executionlog"
          },
          {
            "name": "list-ios-simulator-64_26.0-20260703_022826.log",
            "type": "devicelist"
          },
          {
            "name": "test-ios-simulator-64_26.0-20260703_022833.log",
            "type": "testlog"
          },
          {
            "name": "iPhone 11 Pro.log",
            "type": "systemlog"
          },
          {
            "name": "Microsoft.Maui.Core.DeviceTests.log",
            "type": "systemlog"
          },
          {
            "name": "com.microsoft.maui.core.devicetests.log",
            "type": "applicationlog"
          },
          {
            "name": "xunit-test-ios-simulator-64_26.0-20260703_022833.xml",
            "type": "xmllog"
          }
        ]
      }
      <<XHARNESS_RESULT_END>>
XHarness exit code: 1 (TESTS_FAILED)
  Passed: 0
  Failed: 0
  Tests completed with exit code: 1

🟢 With fix — 📱 ViewHandlerTests (NonUIControlDisablesUserInteractionWhenIsEnabledFalse, NonUIControlKeepsInputTransparentAfterIsEnabledToggles, ContainerUserInteractionTracksIsEnabledAndInputTransparent): PASS ✅ · 224s

(truncated to last 15,000 chars)

pplication/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : monoeg_g_log
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1222280] 	0x10c37a848 - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : load_aot_module
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1222330] 	0x10c454618 - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : mono_assembly_request_load_from
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1222360] 	0x10c454134 - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : mono_assembly_request_open
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1222400] 	0x10c455454 - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : mono_assembly_open
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1232000] 	0x10bfc1ddc - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libxamarin-dotnet.dylib : xamarin_assembly_preload_hook
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1232250] 	0x10c456470 - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : invoke_assembly_preload_hook
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1232330] 	0x10c4533f8 - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : mono_assembly_request_byname
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1232530] 	0x10c3840b0 - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : load_image
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1232590] 	0x10c37a7e0 - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : load_aot_module
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1232630] 	0x10c454618 - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : mono_assembly_request_load_from
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1232670] 	0x10c454134 - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : mono_assembly_request_open
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1232780] 	0x10c455454 - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : mono_assembly_open
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1232980] 	0x10bfc1ddc - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libxamarin-dotnet.dylib : xamarin_assembly_preload_hook
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1233100] 	0x10c456470 - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : invoke_assembly_preload_hook
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1233150] 	0x10c4533f8 - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : mono_assembly_request_byname
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1233200] 	0x10c3840b0 - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : load_image
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1233260] 	0x10c37a7e0 - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : load_aot_module
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1234210] 	0x10c454618 - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : mono_assembly_request_load_from
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1234270] 	0x10c454134 - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : mono_assembly_request_open
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1234340] 	0x10c455454 - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : mono_assembly_open
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1234410] 	0x10bfc1ddc - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libxamarin-dotnet.dylib : xamarin_assembly_preload_hook
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1234450] 	0x10c456470 - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : invoke_assembly_preload_hook
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1234490] 	0x10c4533f8 - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : mono_assembly_request_byname
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1235280] 	0x10c3840b0 - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : load_image
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1235470] 	0x10c37a7e0 - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : load_aot_module
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1235550] 	0x10c37efac - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : mono_aot_get_method
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1235640] 	0x10c303f3c - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : mono_jit_compile_method_with_opt
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1235730] 	0x10c301cac - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : mono_jit_runtime_invoke
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1238660] 	0x10c4c2910 - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : mono_runtime_invoke_checked
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1238940] 	0x10c475818 - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : create_exception_two_strings
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1239010] 	0x10c47559c - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : mono_exception_from_name_two_strings_checked
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1239840] 	0x10c44f96c - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : mono_runtime_init_checked
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1240050] 	0x10c30163c - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : mini_init
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1240110] 	0x10c358d1c - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libmonosgen-2.0.dylib : mono_jit_init
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1240150] 	0x10bfc1014 - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libxamarin-dotnet.dylib : xamarin_bridge_initialize
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.1240250] 	0x10bfc21e8 - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/libxamarin-dotnet.dylib : xamarin_main
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.2029480] 	0x106e9adb0 - /Users/cloudtest/Library/Developer/CoreSimulator/Devices/56B15D00-C97A-4625-B7E5-20814CAA4AC9/data/Containers/Bundle/Application/FE1011AC-06DA-43EC-83FD-3D735C27D19F/Microsoft.Maui.Core.DeviceTests.app/Microsoft.Maui.Core.DeviceTests : main
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.2029930] 	0x10bd293d0 - Unknown
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.2030020] 	0x10bac7da4 - Unknown
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.2030080]
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.2030130] =================================================================
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.2030180] 	Basic Fault Address Reporting
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.2030230] =================================================================
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.2030280] Memory around native instruction pointer (0x10bec488c):0x10bec487c  c0 03 5f d6 c0 03 5f d6 10 29 80 d2 01 10 00 d4  .._..._..)......
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.2030330] 0x10bec488c  e3 00 00 54 fd 7b bf a9 fd 03 00 91 16 e3 ff 97  ...T.{..........
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.2030520] 0x10bec489c  bf 03 00 91 fd 7b c1 a8 c0 03 5f d6 c0 03 5f d6  .....{...._..._.
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.2031160] 0x10bec48ac  70 0a 80 d2 01 10 00 d4 e3 00 00 54 fd 7b bf a9  p..........T.{..
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.2031250]
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.2031290] =================================================================
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.2031330] 	Managed Stacktrace:
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.2031360] =================================================================
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.2031400] 	  at <unknown> <0xffffffff>
�[40m�[37mdbug�[39m�[22m�[49m: [02:32:17.2031430] =================================================================
�[40m�[37mdbug�[39m�[22m�[49m: ==================== End of ApplicationLog ====================
�[40m�[37mdbug�[39m�[22m�[49m: 
�[40m�[32minfo�[39m�[22m�[49m: Uninstalling the application 'com.microsoft.maui.core.devicetests' from 'iPhone 11 Pro'
�[40m�[37mdbug�[39m�[22m�[49m: 
�[40m�[37mdbug�[39m�[22m�[49m: Running /Applications/Xcode_26.0.1.app/Contents/Developer/usr/bin/simctl
�[40m�[37mdbug�[39m�[22m�[49m: Process simctl exited with 0
�[40m�[32minfo�[39m�[22m�[49m: Application 'com.microsoft.maui.core.devicetests' was uninstalled successfully
�[40m�[32minfo�[39m�[22m�[49m: <<XHARNESS_RESULT_START>>
      {
        "version": 1,
        "machineName": "K206DNJGQ1-1",
        "exitCode": 0,
        "exitCodeName": "SUCCESS",
        "platform": "apple",
        "device": "iPhone 11 Pro",
        "deviceOsVersion": "26.0",
        "files": [
          {
            "name": "test-ios-simulator-64_26.0-56B15D00-C97A-4625-B7E5-20814CAA4AC9.log",
            "type": "executionlog"
          },
          {
            "name": "list-ios-simulator-64_26.0-20260703_023209.log",
            "type": "devicelist"
          },
          {
            "name": "iPhone 11 Pro.log",
            "type": "systemlog"
          },
          {
            "name": "Microsoft.Maui.Core.DeviceTests.log",
            "type": "systemlog"
          },
          {
            "name": "com.microsoft.maui.core.devicetests.log",
            "type": "applicationlog"
          }
        ]
      }
      <<XHARNESS_RESULT_END>>
XHarness exit code: 0
  Passed: 0
  Failed: 0
  Tests completed successfully

📁 Fix files reverted (2 files)
  • src/Core/src/Handlers/View/ViewHandler.cs
  • src/Core/src/Platform/iOS/ViewExtensions.cs

📱 UI Tests — ViewBaseTests

Detected UI test categories: ViewBaseTests

Deep UI tests — 13 passed, 99 failed across 1 category on platform-pool agent (replaces in-process counts above).

🧪 UI Test Execution Results (deep, platform pool)

Category Tests Snapshot diffs
ViewBaseTests 13/112 (99 ❌) 198 diff PNGs
ViewBaseTests — 99 failed tests
Image_ClipWithGeometryGroup
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.ClipFeatureTests.Image_ClipWithGeometryGroup() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ClipFeatureTests.cs:line 335
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection.Run
...
Border_ClipWithStrokeColorBlue
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.ClipFeatureTests.Border_ClipWithStrokeColorBlue() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ClipFeatureTests.cs:line 71
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection.R
...
DarkTheme_CheckBox_VerifyVisualState
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.AppThemeFeatureTests.DarkTheme_CheckBox_VerifyVisualState() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/AppThemeFeatureTests.cs:line 67
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)
Image_ClipWithLineSegmentPath
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.ClipFeatureTests.Image_ClipWithLineSegmentPath() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ClipFeatureTests.cs:line 351
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection.R
...
FirstCustomPageWithBackgroundColor
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.ContentViewFeatureTests.FirstCustomPageWithBackgroundColor() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ContentViewFeatureTests.cs:line 216
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at 
...
VisualTransform_ScaleXWithAnchorYAndRotationY
System.InvalidOperationException : 
Snapshot different than baseline: VisualTransform_ScaleXWithAnchorYAndRotationY.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.

More info: https://aka.ms/visual-test-workflow


iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
  xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0

Then run the tests targeting the new simulator.
  ----> VisualTestUtils.VisualTestFailedException : 
Snapshot different than baseline: VisualTransform_ScaleXWithAnchorYAndRotationY.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the 
...
VerifyBackgroundColorCleared
System.InvalidOperationException : 
Snapshot different than baseline: VerifyBackgroundColorCleared.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.

More info: https://aka.ms/visual-test-workflow


iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
  xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0

Then run the tests targeting the new simulator.
  ----> VisualTestUtils.VisualTestFailedException : 
Snapshot different than baseline: VerifyBackgroundColorCleared.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachmen
...
LightTheme_Switch_VerifyVisualState
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.AppThemeFeatureTests.LightTheme_Switch_VerifyVisualState() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/AppThemeFeatureTests.cs:line 185
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
DarkTheme_SearchBar_VerifyVisualState
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.AppThemeFeatureTests.DarkTheme_SearchBar_VerifyVisualState() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/AppThemeFeatureTests.cs:line 266
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at Sys
...
Image_ClipWithRotation
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.ClipFeatureTests.Image_ClipWithRotation() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ClipFeatureTests.cs:line 811
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection.RuntimeM
...
VisualTransform_IsVisible
System.InvalidOperationException : 
Snapshot different than baseline: VisualTransform_IsVisible.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.

More info: https://aka.ms/visual-test-workflow


iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
  xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0

Then run the tests targeting the new simulator.
  ----> VisualTestUtils.VisualTestFailedException : 
Snapshot different than baseline: VisualTransform_IsVisible.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or d
...
DarkTheme_EditorAndPlaceholderColor_VerifyVisualState
System.InvalidOperationException : 
Snapshot different than baseline: DarkTheme_EditorAndPlaceholderColor_VerifyVisualState.png (size differs - baseline is 1124x1126 pixels, actual is 1206x1312 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.

More info: https://aka.ms/visual-test-workflow


iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
  xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0

Then run the tests targeting the new simulator.
  ----> VisualTestUtils.VisualTestFailedException : 
Snapshot different than baseline: DarkTheme_EditorAndPlaceholderColor_VerifyVisualState.png (size differs - baseline is 1124x1126 pixels, actual is 1206x1312 pixels)
If the correct baseline has changed (this isn't a a bug), 
...
DefaultContentWithFlowDirection
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.ContentViewFeatureTests.DefaultContentWithFlowDirection() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ContentViewFeatureTests.cs:line 172
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at Sys
...
VisualTransform_Rotation
System.InvalidOperationException : 
Snapshot different than baseline: VisualTransform_Rotation.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.

More info: https://aka.ms/visual-test-workflow


iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
  xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0

Then run the tests targeting the new simulator.
  ----> VisualTestUtils.VisualTestFailedException : 
Snapshot different than baseline: VisualTransform_Rotation.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or dow
...
VisualTransform_ScaleYWithAnchorXAndRotationY
System.InvalidOperationException : 
Snapshot different than baseline: VisualTransform_ScaleYWithAnchorXAndRotationY.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.

More info: https://aka.ms/visual-test-workflow


iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
  xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0

Then run the tests targeting the new simulator.
  ----> VisualTestUtils.VisualTestFailedException : 
Snapshot different than baseline: VisualTransform_ScaleYWithAnchorXAndRotationY.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the 
...
VisualTransform_RotationXWithScaleX
System.InvalidOperationException : 
Snapshot different than baseline: VisualTransform_RotationXWithScaleX.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.

More info: https://aka.ms/visual-test-workflow


iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
  xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0

Then run the tests targeting the new simulator.
  ----> VisualTestUtils.VisualTestFailedException : 
Snapshot different than baseline: VisualTransform_RotationXWithScaleX.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See 
...
Image_ClipWithEllipseGeometry
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.ClipFeatureTests.Image_ClipWithEllipseGeometry() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ClipFeatureTests.cs:line 303
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection.R
...
Border_ClipWithStrokeThickness
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.ClipFeatureTests.Border_ClipWithStrokeThickness() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ClipFeatureTests.cs:line 52
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection.R
...
DefaultContentWithWidthRequest
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.ContentViewFeatureTests.DefaultContentWithWidthRequest() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ContentViewFeatureTests.cs:line 132
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at Syst
...
Button_ClipWithImageSource
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.ClipFeatureTests.Button_ClipWithImageSource() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ClipFeatureTests.cs:line 223
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection.Runt
...
Button_ClipWithScale
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.ClipFeatureTests.Button_ClipWithScale() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ClipFeatureTests.cs:line 892
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection.RuntimeMet
...
Image_ClipWithPolyQuadraticBezierSegmentPath
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.ClipFeatureTests.Image_ClipWithPolyQuadraticBezierSegmentPath() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ClipFeatureTests.cs:line 447
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at Syst
...
SecondCustomPageWithBackgroundColorChanged
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.ContentViewFeatureTests.SecondCustomPageWithBackgroundColorChanged() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ContentViewFeatureTests.cs:line 304
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args
...
VerifyBackgroundColorSet
System.InvalidOperationException : 
Snapshot different than baseline: VerifyBackgroundColorSet.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.

More info: https://aka.ms/visual-test-workflow


iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
  xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0

Then run the tests targeting the new simulator.
  ----> VisualTestUtils.VisualTestFailedException : 
Snapshot different than baseline: VerifyBackgroundColorSet.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or dow
...
FirstCustomPageWithFlowDirection
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.ContentViewFeatureTests.FirstCustomPageWithFlowDirection() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ContentViewFeatureTests.cs:line 245
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at Sy
...
DefaultContentWithShadow
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.ContentViewFeatureTests.DefaultContentWithShadow() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ContentViewFeatureTests.cs:line 146
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Ref
...
VisualTransform_Scale
System.InvalidOperationException : 
Snapshot different than baseline: VisualTransform_Scale.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download the build artifacts to get the new snapshot file.

More info: https://aka.ms/visual-test-workflow


iOS 26 visual tests require an iPhone 11 Pro simulator for correct screen resolution.
To create the simulator, run:
  xcrun simctl create "iPhone 11 Pro" com.apple.CoreSimulator.SimDeviceType.iPhone-11-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-0

Then run the tests targeting the new simulator.
  ----> VisualTestUtils.VisualTestFailedException : 
Snapshot different than baseline: VisualTransform_Scale.png (size differs - baseline is 1124x2286 pixels, actual is 1206x2472 pixels)
If the correct baseline has changed (this isn't a a bug), then update the baseline image.
See test attachment or download 
...
Image_ClipWithQuadraticBezierSegmentPath
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.ClipFeatureTests.Image_ClipWithQuadraticBezierSegmentPath() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ClipFeatureTests.cs:line 431
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.R
...
DefaultContentWithBackgroundColor
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.ContentViewFeatureTests.DefaultContentWithBackgroundColor() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/ContentViewFeatureTests.cs:line 106
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at S
...
DarkTheme_VerifyVisualState
System.InvalidOperationException : Unable to extract difference percentage from exception message.
at Microsoft.Maui.TestCases.Tests.UITest.VerifyScreenshot(String name, Nullable`1 retryDelay, Nullable`1 retryTimeout, Int32 cropLeft, Int32 cropRight, Int32 cropTop, Int32 cropBottom, Double tolerance) in /_/src/Controls/tests/TestCases.Shared.Tests/UITest.cs:line 296
   at Microsoft.Maui.TestCases.Tests.AppThemeFeatureTests.DarkTheme_VerifyVisualState() in /_/src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/AppThemeFeatureTests.cs:line 40
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)

(+69 more — see TRX in artifact)

📎 Download drop-deep-uitests artifact (TRX + snapshot diffs)


📋 Pre-Flight — Context & Validation

Issue: #36059 - [iOS] SKCanvasView and SKGLView become nonresponsive to taps and clicks after upgrade on .NET MAUI 10.0.60 (while toggling IsEnabled of parent Grid)
PR: #36305 - [iOS] Respect InputTransparent when updating UserInteractionEnabled
Platforms Affected: iOS, MacCatalyst (code paths); reported repro on iOS
Files Changed: 2 implementation, 1 test

Key Findings

  • Issue repro toggles a parent Grid.IsEnabled false/true and leaves SKCanvasView/SKGLView nonresponsive on iOS; issue comments identify #31403/non-UIControl UserInteractionEnabled behavior as the likely regression.
  • PR changes iOS UIView.UpdateIsEnabled and UpdateInputTransparent so non-UIControl hit testing respects both IsEnabled and InputTransparent.
  • PR also synchronizes iOS/MacCatalyst WrapperView containers from base ViewHandler mapper paths and adds Core iOS device tests for non-UIControl and container behavior.
  • gh is unauthenticated in this environment, so PR comments/checks were gathered through local state and unauthenticated public GitHub API where available.

Code Review Summary

Verdict: NEEDS_CHANGES
Confidence: low
Errors: 1 | Warnings: 0 | Suggestions: 1

Key code review findings:

  • src/Core/src/Handlers/View/ViewHandler.cs:340-343, 629-632 — container synchronization still misses handlers that override iOS IsEnabled mappings, and WrapperView.UpdateInputTransparent(handler, view) can ignore IsEnabled for non-Editor ITextInput cases.
  • src/Core/tests/DeviceTests/Handlers/View/ViewHandlerTests.iOS.cs:84 — missing final newline.

Fix Candidates

# Source Approach Test Result Files Changed Notes
PR PR #36305 Combine IsEnabled and InputTransparent in iOS non-UIControl paths and call container sync from base view mapper paths. ✅ PASSED (Gate) ViewHandler.cs, ViewExtensions.cs, ViewHandlerTests.iOS.cs Original PR; gate result was provided as already passed.

🔬 Code Review — Deep Analysis

Code Review — PR #36305

Independent Assessment

What this changes: iOS/MacCatalyst UserInteractionEnabled now combines IsEnabled and InputTransparent for non-UIControl views, and attempts to keep WrapperView containers synchronized when IsEnabled, InputTransparent, or container creation changes.

Inferred motivation: Fix stale hit-testing after toggling IsEnabled, especially for wrapped non-UIControl views such as SKCanvasView/SKGLView scenarios.

Reconciliation with PR Narrative

Author claims: Fixes #36059; preserves #31403/#19771; adds iOS Core device-test coverage.

Agreement/disagreement: The general root cause matches the code, and prior test-placement feedback was addressed by moving coverage to device tests. However, the container sync is incomplete for iOS handlers overriding IsEnabled and for ITextInput wrapper updates.

Prior Review Reconciliation

Prior ❌ Error Finding Source Status Evidence
Wrapper not synchronized when IsEnabled changes MauiBot inline [major] ✅ Partially fixed / ❌ Still incomplete Base ViewHandler.MapIsEnabled now calls container sync, but iOS handlers such as SearchBarHandler/EditorHandler override IsEnabled and bypass it.
iOS unit tests did not run MauiBot inline [major] ✅ Fixed The old unit-test file is gone; current coverage is in Core.DeviceTests iOS file.

Blast Radius Assessment

  • Runs for all instances: No; iOS/MacCatalyst handler/platform paths only.
  • Startup impact: Low; mapper-time property updates.
  • Static/shared state: No.
  • Handler/platform risk: Medium; touch/hit-testing plumbing affects wrapped controls.

CI Status

  • Required-check result: gh pr checks --required unavailable because gh is unauthenticated.
  • Public check-runs: maui-pr passed; maui-pr-uitests failed; maui-pr-devicetests failed.
  • Classification: undetermined; public AzDO timelines show Windows UI/device failures, not clearly PR-caused.
  • Action taken: invoked azdo-build-investigator; ci-analysis skill unavailable; confidence capped low.

Findings

❌ Error — Container synchronization still misses real handlers/text inputs

src/Core/src/Handlers/View/ViewHandler.cs:340-343, 629-632

The new base MapIsEnabled call only helps handlers that use ViewHandler.MapIsEnabled. iOS handlers such as SearchBarHandler and EditorHandler override IsEnabled, so a clipped/shadowed SearchBar/Editor container can still remain stale when IsEnabled changes.

Also, the helper delegates to wrapper.UpdateInputTransparent(handler, view). For ITextInput non-Editor views, that path ignores view.IsEnabled, so a clipped Entry with IsEnabled=false, InputTransparent=false, IsReadOnly=false leaves the wrapper interactive.

The wrapper should compute container hit-testing independently, e.g. view.IsEnabled && !view.InputTransparent, and iOS IsEnabled overrides need equivalent container sync.

💡 Suggestion — Missing final newline

src/Core/tests/DeviceTests/Handlers/View/ViewHandlerTests.iOS.cs:84

The file ends without a newline.

Failure-Mode Probing

  • Clipped StubBase: works; new tests cover this path.
  • Clipped Entry, disabled: wrapper remains UserInteractionEnabled=true via ITextInput branch.
  • Clipped SearchBar, disabled: custom mapper bypasses base container sync.
  • Handler reconnect/container creation: base path initializes wrappers, but only for handlers reaching the base mapper.

Verdict: NEEDS_CHANGES

Confidence: low

Summary: The intended fix is directionally correct, but it does not cover important iOS wrapped-control paths. CI is also red/partially unavailable, so this cannot be considered merge-ready.


🛠️ Fix — Analysis & Comparison

Fix Candidates

# Source Approach Test Result Files Changed Notes
1 try-fix Centralize iOS effective hit-test synchronization so wrappers use view.IsEnabled && !view.InputTransparent, and update handler-specific iOS paths that bypass base ViewHandler.MapIsEnabled (SearchBar, Editor, CollectionView). ✅ PASS 5 files Addresses the pre-flight code-review error around stale wrappers for overridden handler mappings and ITextInput wrapper behavior.
PR PR #36305 Combine IsEnabled and InputTransparent in iOS non-UIControl paths and call container sync from base view mapper paths. ✅ PASSED (Gate) 3 files Original PR; simpler and already gate-verified, but code review found incomplete wrapper synchronization.

Cross-Pollination

Model Round New Ideas? Details
gpt-5.5 / maui-expert-reviewer 1 Yes Proposed moving wrapper synchronization into iOS platform hit-test helpers so handler-specific IsEnabled overrides also synchronize containers.

Exhausted: No — stopped after candidate #1 because it passed the iOS regression test run and is demonstrably more complete than the PR fix for the uncovered wrapper/handler failure mode.
Selected Fix: Candidate #1 — It preserves the PR's core non-UIControl behavior while covering wrapper synchronization gaps for iOS handlers that bypass base mapper call order. It is broader than the PR and should be paired with targeted text-input regression tests before adoption.


🏁 Report — Final Recommendation

Comparative Report — PR #36305

Candidates compared

Rank Candidate Regression result Assessment
1 pr-plus-reviewer ✅ PASS by equivalence to STEP 5a try-fix-1; sandbox build succeeded Best candidate. Preserves the PR's base non-UIControl fix and applies expert feedback so wrapper hit testing also stays synchronized for ITextInput and handler-specific iOS mapper paths.
2 try-fix-1 ✅ PASS — iOS View device tests passed (68 passed, 0 failed) Technically equivalent to pr-plus-reviewer and demonstrably fixes the same gaps. Ranked below only because pr-plus-reviewer represents the PR fix plus accepted expert feedback, so it remains the PR-lineage candidate.
3 pr ✅ Gate passed Directionally correct and regression-gate verified, but expert review found unresolved correctness gaps: stale wrappers for iOS handlers that override MapIsEnabled, and non-Editor ITextInput wrapper paths still ignoring IsEnabled.

No STEP 5a candidates failed regression tests. If any had failed, they would be ranked below all passing candidates.

Winning candidate

Winner: pr-plus-reviewer

The raw PR fix should not win because it leaves important iOS/Mac Catalyst wrapped-control paths inconsistent. try-fix-1 and pr-plus-reviewer are effectively the same fix; choosing pr-plus-reviewer records that the PR can be made mergeable by applying the expert reviewer's actionable feedback rather than replacing it with an unrelated alternative.

Recommended action

Update PR #36305 with the pr-plus-reviewer patch before merge. The patch should be paired with targeted follow-up coverage for wrapped ITextInput and iOS handlers with custom MapIsEnabled implementations if time allows, but the candidate is still the strongest available fix because it addresses the confirmed correctness gaps and keeps the original regression passing.


🧭 Next Steps — review latest findings

No alternative fix was selected for this run. Review the session findings and CI results before merging.

@MauiBot MauiBot removed the s/agent-review-in-progress AI review is currently running for this PR label Jul 3, 2026
@kubaflo
kubaflo changed the base branch from main to inflight/current July 3, 2026 12:02
@kubaflo
kubaflo force-pushed the inflight/current branch from 3136313 to 2542716 Compare July 3, 2026 13:46
@kubaflo
kubaflo merged commit cfca970 into inflight/current Jul 3, 2026
87 of 95 checks passed
@kubaflo
kubaflo deleted the jfversluis-fix-ios-inputtransparent-isenabled branch July 3, 2026 13:58
@github-actions github-actions Bot added this to the .NET 10 SR9 milestone Jul 3, 2026
@kubaflo kubaflo mentioned this pull request Jul 6, 2026
kubaflo pushed a commit that referenced this pull request Jul 6, 2026
…36305)

<!-- Please let the below note in for people that find this PR -->
> [!NOTE]
> Are you waiting for the changes in this PR to be merged?
> It would be very helpful if you could [test the resulting
artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from
this PR and let us know in a comment if this change resolves your issue.
Thank you!

### Description of Change

Updates the iOS `ViewExtensions.UpdateIsEnabled` path for
non-`UIControl` views to respect `InputTransparent` when setting
`UserInteractionEnabled`. This prevents an `InputTransparent="True"`
layout from becoming touch-blocking after a parent `IsEnabled` toggle,
while preserving the previous fix that disabled non-`UIControl` views
should not receive interactions.

Also keeps iOS/Mac Catalyst wrapper/container hit testing synchronized
when `IsEnabled` changes or when a container is created, so `IsEnabled`
and `InputTransparent` remain consistent regardless of mapper order.

@janne-hmp, once this PR publishes build artifacts, could you please
verify them with the repro/GnollHack flow from #36059 and confirm
whether SKCanvasView/SKGLView receive taps again after toggling the
parent `Grid.IsEnabled`?

### Issues Fixed

Fixes #36059
Keeps the behavior fixed by #31403 / #19771.

### Validation

- `dotnet build Microsoft.Maui.BuildTasks.slnf`
- `dotnet build src/Core/tests/DeviceTests/Core.DeviceTests.csproj
-p:TargetFramework=net10.0-ios -p:RuntimeIdentifier=iossimulator-arm64
--no-restore`
- Added iOS Core device-test coverage for `IsEnabled`,
`InputTransparent`, and wrapper/container hit-testing combinations.

---------

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
devanathan-vaithiyanathan pushed a commit to devanathan-vaithiyanathan/maui that referenced this pull request Jul 7, 2026
…otnet#36305)

<!-- Please let the below note in for people that find this PR -->
> [!NOTE]
> Are you waiting for the changes in this PR to be merged?
> It would be very helpful if you could [test the resulting
artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from
this PR and let us know in a comment if this change resolves your issue.
Thank you!

### Description of Change

Updates the iOS `ViewExtensions.UpdateIsEnabled` path for
non-`UIControl` views to respect `InputTransparent` when setting
`UserInteractionEnabled`. This prevents an `InputTransparent="True"`
layout from becoming touch-blocking after a parent `IsEnabled` toggle,
while preserving the previous fix that disabled non-`UIControl` views
should not receive interactions.

Also keeps iOS/Mac Catalyst wrapper/container hit testing synchronized
when `IsEnabled` changes or when a container is created, so `IsEnabled`
and `InputTransparent` remain consistent regardless of mapper order.

@janne-hmp, once this PR publishes build artifacts, could you please
verify them with the repro/GnollHack flow from dotnet#36059 and confirm
whether SKCanvasView/SKGLView receive taps again after toggling the
parent `Grid.IsEnabled`?

### Issues Fixed

Fixes dotnet#36059
Keeps the behavior fixed by dotnet#31403 / dotnet#19771.

### Validation

- `dotnet build Microsoft.Maui.BuildTasks.slnf`
- `dotnet build src/Core/tests/DeviceTests/Core.DeviceTests.csproj
-p:TargetFramework=net10.0-ios -p:RuntimeIdentifier=iossimulator-arm64
--no-restore`
- Added iOS Core device-test coverage for `IsEnabled`,
`InputTransparent`, and wrapper/container hit-testing combinations.

---------

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
PureWeen pushed a commit that referenced this pull request Jul 7, 2026
…36305)

<!-- Please let the below note in for people that find this PR -->
> [!NOTE]
> Are you waiting for the changes in this PR to be merged?
> It would be very helpful if you could [test the resulting
artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from
this PR and let us know in a comment if this change resolves your issue.
Thank you!

### Description of Change

Updates the iOS `ViewExtensions.UpdateIsEnabled` path for
non-`UIControl` views to respect `InputTransparent` when setting
`UserInteractionEnabled`. This prevents an `InputTransparent="True"`
layout from becoming touch-blocking after a parent `IsEnabled` toggle,
while preserving the previous fix that disabled non-`UIControl` views
should not receive interactions.

Also keeps iOS/Mac Catalyst wrapper/container hit testing synchronized
when `IsEnabled` changes or when a container is created, so `IsEnabled`
and `InputTransparent` remain consistent regardless of mapper order.

@janne-hmp, once this PR publishes build artifacts, could you please
verify them with the repro/GnollHack flow from #36059 and confirm
whether SKCanvasView/SKGLView receive taps again after toggling the
parent `Grid.IsEnabled`?

### Issues Fixed

Fixes #36059
Keeps the behavior fixed by #31403 / #19771.

### Validation

- `dotnet build Microsoft.Maui.BuildTasks.slnf`
- `dotnet build src/Core/tests/DeviceTests/Core.DeviceTests.csproj
-p:TargetFramework=net10.0-ios -p:RuntimeIdentifier=iossimulator-arm64
--no-restore`
- Added iOS Core device-test coverage for `IsEnabled`,
`InputTransparent`, and wrapper/container hit-testing combinations.

---------

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
PureWeen pushed a commit that referenced this pull request Jul 7, 2026
…36305)

<!-- Please let the below note in for people that find this PR -->
> [!NOTE]
> Are you waiting for the changes in this PR to be merged?
> It would be very helpful if you could [test the resulting
artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from
this PR and let us know in a comment if this change resolves your issue.
Thank you!

### Description of Change

Updates the iOS `ViewExtensions.UpdateIsEnabled` path for
non-`UIControl` views to respect `InputTransparent` when setting
`UserInteractionEnabled`. This prevents an `InputTransparent="True"`
layout from becoming touch-blocking after a parent `IsEnabled` toggle,
while preserving the previous fix that disabled non-`UIControl` views
should not receive interactions.

Also keeps iOS/Mac Catalyst wrapper/container hit testing synchronized
when `IsEnabled` changes or when a container is created, so `IsEnabled`
and `InputTransparent` remain consistent regardless of mapper order.

@janne-hmp, once this PR publishes build artifacts, could you please
verify them with the repro/GnollHack flow from #36059 and confirm
whether SKCanvasView/SKGLView receive taps again after toggling the
parent `Grid.IsEnabled`?

### Issues Fixed

Fixes #36059
Keeps the behavior fixed by #31403 / #19771.

### Validation

- `dotnet build Microsoft.Maui.BuildTasks.slnf`
- `dotnet build src/Core/tests/DeviceTests/Core.DeviceTests.csproj
-p:TargetFramework=net10.0-ios -p:RuntimeIdentifier=iossimulator-arm64
--no-restore`
- Added iOS Core device-test coverage for `IsEnabled`,
`InputTransparent`, and wrapper/container hit-testing combinations.

---------

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
kubaflo pushed a commit that referenced this pull request Jul 10, 2026
…36305)

<!-- Please let the below note in for people that find this PR -->
> [!NOTE]
> Are you waiting for the changes in this PR to be merged?
> It would be very helpful if you could [test the resulting
artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from
this PR and let us know in a comment if this change resolves your issue.
Thank you!

### Description of Change

Updates the iOS `ViewExtensions.UpdateIsEnabled` path for
non-`UIControl` views to respect `InputTransparent` when setting
`UserInteractionEnabled`. This prevents an `InputTransparent="True"`
layout from becoming touch-blocking after a parent `IsEnabled` toggle,
while preserving the previous fix that disabled non-`UIControl` views
should not receive interactions.

Also keeps iOS/Mac Catalyst wrapper/container hit testing synchronized
when `IsEnabled` changes or when a container is created, so `IsEnabled`
and `InputTransparent` remain consistent regardless of mapper order.

@janne-hmp, once this PR publishes build artifacts, could you please
verify them with the repro/GnollHack flow from #36059 and confirm
whether SKCanvasView/SKGLView receive taps again after toggling the
parent `Grid.IsEnabled`?

### Issues Fixed

Fixes #36059
Keeps the behavior fixed by #31403 / #19771.

### Validation

- `dotnet build Microsoft.Maui.BuildTasks.slnf`
- `dotnet build src/Core/tests/DeviceTests/Core.DeviceTests.csproj
-p:TargetFramework=net10.0-ios -p:RuntimeIdentifier=iossimulator-arm64
--no-restore`
- Added iOS Core device-test coverage for `IsEnabled`,
`InputTransparent`, and wrapper/container hit-testing combinations.

---------

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
kubaflo pushed a commit that referenced this pull request Jul 15, 2026
…36305)

<!-- Please let the below note in for people that find this PR -->
> [!NOTE]
> Are you waiting for the changes in this PR to be merged?
> It would be very helpful if you could [test the resulting
artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from
this PR and let us know in a comment if this change resolves your issue.
Thank you!

### Description of Change

Updates the iOS `ViewExtensions.UpdateIsEnabled` path for
non-`UIControl` views to respect `InputTransparent` when setting
`UserInteractionEnabled`. This prevents an `InputTransparent="True"`
layout from becoming touch-blocking after a parent `IsEnabled` toggle,
while preserving the previous fix that disabled non-`UIControl` views
should not receive interactions.

Also keeps iOS/Mac Catalyst wrapper/container hit testing synchronized
when `IsEnabled` changes or when a container is created, so `IsEnabled`
and `InputTransparent` remain consistent regardless of mapper order.

@janne-hmp, once this PR publishes build artifacts, could you please
verify them with the repro/GnollHack flow from #36059 and confirm
whether SKCanvasView/SKGLView receive taps again after toggling the
parent `Grid.IsEnabled`?

### Issues Fixed

Fixes #36059
Keeps the behavior fixed by #31403 / #19771.

### Validation

- `dotnet build Microsoft.Maui.BuildTasks.slnf`
- `dotnet build src/Core/tests/DeviceTests/Core.DeviceTests.csproj
-p:TargetFramework=net10.0-ios -p:RuntimeIdentifier=iossimulator-arm64
--no-restore`
- Added iOS Core device-test coverage for `IsEnabled`,
`InputTransparent`, and wrapper/container hit-testing combinations.

---------

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
kubaflo pushed a commit that referenced this pull request Jul 22, 2026
…36305)

<!-- Please let the below note in for people that find this PR -->
> [!NOTE]
> Are you waiting for the changes in this PR to be merged?
> It would be very helpful if you could [test the resulting
artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from
this PR and let us know in a comment if this change resolves your issue.
Thank you!

### Description of Change

Updates the iOS `ViewExtensions.UpdateIsEnabled` path for
non-`UIControl` views to respect `InputTransparent` when setting
`UserInteractionEnabled`. This prevents an `InputTransparent="True"`
layout from becoming touch-blocking after a parent `IsEnabled` toggle,
while preserving the previous fix that disabled non-`UIControl` views
should not receive interactions.

Also keeps iOS/Mac Catalyst wrapper/container hit testing synchronized
when `IsEnabled` changes or when a container is created, so `IsEnabled`
and `InputTransparent` remain consistent regardless of mapper order.

@janne-hmp, once this PR publishes build artifacts, could you please
verify them with the repro/GnollHack flow from #36059 and confirm
whether SKCanvasView/SKGLView receive taps again after toggling the
parent `Grid.IsEnabled`?

### Issues Fixed

Fixes #36059
Keeps the behavior fixed by #31403 / #19771.

### Validation

- `dotnet build Microsoft.Maui.BuildTasks.slnf`
- `dotnet build src/Core/tests/DeviceTests/Core.DeviceTests.csproj
-p:TargetFramework=net10.0-ios -p:RuntimeIdentifier=iossimulator-arm64
--no-restore`
- Added iOS Core device-test coverage for `IsEnabled`,
`InputTransparent`, and wrapper/container hit-testing combinations.

---------

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
kubaflo pushed a commit that referenced this pull request Jul 25, 2026
… ScrollView interaction state after IsEnabled toggles (#36628)

<!-- Please let the below note in for people that find this PR -->
> [!NOTE]
> Are you waiting for the changes in this PR to be merged?
> It would be very helpful if you could [test the resulting
artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from
this PR and let us know in a comment if this change resolves your issue.
Thank you!

### Issue Details
- On iOS and macOS, four tests —
CollectionViewScrollsWhenRefreshViewDisabled,
ScrollViewInitiallyNotEnabledThenEnabled,
ProgressSpinnerWorksWhenReEnabled, and
VerifyCollectionViewIsEnableState — are failing in candidate PR #36411
due to PR #36305.

### Root Cause
- PR #36305 updated ViewExtensions.UpdateIsEnabled to compute
UserInteractionEnabled using both IsEnabled and InputTransparent for
non-UIControl views. However, because CollectionView, RefreshView, and
ScrollView override MapIsEnabled without invoking the shared
implementation, they never adopted this new logic, causing inconsistent
UserInteractionEnabled behavior across enable/disable state changes and
resulting in failures in CollectionViewScrollsWhenRefreshViewDisabled,
ProgressSpinnerWorksWhenReEnabled, VerifyCollectionViewIsEnableState,
and ScrollViewInitiallyNotEnabledThenEnabled.

### Description of Change
- Introduced a new UpdateInteractionState extension method in
ViewExtensions.cs that centralizes the logic for setting
UserInteractionEnabled based on both IsEnabled and InputTransparent, and
updated both UpdateIsEnabled and UpdateInputTransparent to use this
method.
- Updated MapIsEnabled methods in handlers for ItemsViewHandler,
ItemsViewHandler2, RefreshViewHandler, and ScrollViewHandler to call the
base ViewHandler.MapIsEnabled, ensuring interaction state is always
recomputed.


### Issues Fixed
Fixes #36501

### Validated the behaviour in the following platforms

- [ ] Windows
- [ ] Android
- [x] iOS
- [x] Mac

### Output
| TestCase | Before | After |
|----------|----------|----------|
| CollectionViewScrollsWhenRefreshViewDisabled | <img
src="https://github.com/user-attachments/assets/91d4a461-e7c8-4c5c-ae67-578e761fc2f8">
| <img
src="https://github.com/user-attachments/assets/758235b2-2a60-4352-ba6d-f6303be4a451">
|
| ScrollViewInitiallyNotEnabledThenEnabled | <img
src="https://github.com/user-attachments/assets/5fafbe0c-3fb5-41e2-9ae0-2250003c099f">
| <img
src="https://github.com/user-attachments/assets/29f70482-e7dc-4255-b9fe-1485d3a725c3">
|
| ProgressSpinnerWorksWhenReEnabled | <img
src="https://github.com/user-attachments/assets/0dee44b2-09b3-418e-bff9-ec5d3bb11f7d">
| <img
src="https://github.com/user-attachments/assets/cdf9fc11-27fd-48ec-b91d-8b56e6dc83e0">
|
|VerifyCollectionViewIsEnableState | <img
src="https://github.com/user-attachments/assets/a5df9338-3fc8-4d47-8c32-a664e89b6471">
| <img
src="https://github.com/user-attachments/assets/17215ea8-a215-4e08-b68c-ef251d02b995">
|
kubaflo pushed a commit that referenced this pull request Jul 28, 2026
…36305)

<!-- Please let the below note in for people that find this PR -->
> [!NOTE]
> Are you waiting for the changes in this PR to be merged?
> It would be very helpful if you could [test the resulting
artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from
this PR and let us know in a comment if this change resolves your issue.
Thank you!

### Description of Change

Updates the iOS `ViewExtensions.UpdateIsEnabled` path for
non-`UIControl` views to respect `InputTransparent` when setting
`UserInteractionEnabled`. This prevents an `InputTransparent="True"`
layout from becoming touch-blocking after a parent `IsEnabled` toggle,
while preserving the previous fix that disabled non-`UIControl` views
should not receive interactions.

Also keeps iOS/Mac Catalyst wrapper/container hit testing synchronized
when `IsEnabled` changes or when a container is created, so `IsEnabled`
and `InputTransparent` remain consistent regardless of mapper order.

@janne-hmp, once this PR publishes build artifacts, could you please
verify them with the repro/GnollHack flow from #36059 and confirm
whether SKCanvasView/SKGLView receive taps again after toggling the
parent `Grid.IsEnabled`?

### Issues Fixed

Fixes #36059
Keeps the behavior fixed by #31403 / #19771.

### Validation

- `dotnet build Microsoft.Maui.BuildTasks.slnf`
- `dotnet build src/Core/tests/DeviceTests/Core.DeviceTests.csproj
-p:TargetFramework=net10.0-ios -p:RuntimeIdentifier=iossimulator-arm64
--no-restore`
- Added iOS Core device-test coverage for `IsEnabled`,
`InputTransparent`, and wrapper/container hit-testing combinations.

---------

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
kubaflo pushed a commit that referenced this pull request Jul 29, 2026
…36305)

<!-- Please let the below note in for people that find this PR -->
> [!NOTE]
> Are you waiting for the changes in this PR to be merged?
> It would be very helpful if you could [test the resulting
artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from
this PR and let us know in a comment if this change resolves your issue.
Thank you!

### Description of Change

Updates the iOS `ViewExtensions.UpdateIsEnabled` path for
non-`UIControl` views to respect `InputTransparent` when setting
`UserInteractionEnabled`. This prevents an `InputTransparent="True"`
layout from becoming touch-blocking after a parent `IsEnabled` toggle,
while preserving the previous fix that disabled non-`UIControl` views
should not receive interactions.

Also keeps iOS/Mac Catalyst wrapper/container hit testing synchronized
when `IsEnabled` changes or when a container is created, so `IsEnabled`
and `InputTransparent` remain consistent regardless of mapper order.

@janne-hmp, once this PR publishes build artifacts, could you please
verify them with the repro/GnollHack flow from #36059 and confirm
whether SKCanvasView/SKGLView receive taps again after toggling the
parent `Grid.IsEnabled`?

### Issues Fixed

Fixes #36059
Keeps the behavior fixed by #31403 / #19771.

### Validation

- `dotnet build Microsoft.Maui.BuildTasks.slnf`
- `dotnet build src/Core/tests/DeviceTests/Core.DeviceTests.csproj
-p:TargetFramework=net10.0-ios -p:RuntimeIdentifier=iossimulator-arm64
--no-restore`
- Added iOS Core device-test coverage for `IsEnabled`,
`InputTransparent`, and wrapper/container hit-testing combinations.

---------

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@github-actions github-actions Bot locked and limited conversation to collaborators Aug 3, 2026
@github-actions github-actions Bot modified the milestones: .NET 10 SR9, .NET 10 SR10 Aug 20, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-controls-general General issues that span multiple controls, or common base classes such as View or Element platform/ios s/agent-fix-pr-picked AI could not beat the PR fix - PR is the best among all candidates s/agent-gate-passed AI verified tests catch the bug (fail without fix, pass with fix) s/agent-reviewed PR was reviewed by AI agent workflow (full 4-phase review)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[iOS] SKCanvasView and SKGLView become nonresponsive to taps and clicks after upgrade on .NET MAUI 10.0.60 (while toggling IsEnabled of parent Grid)

5 participants