Skip to content

[iOS] Fixed an issue where an Editor with a small height inside a ScrollView would cause the entire page to scroll#27948

Merged
PureWeen merged 5 commits intodotnet:inflight/currentfrom
Tamilarasan-Paranthaman:fix-27750
Dec 22, 2025
Merged

[iOS] Fixed an issue where an Editor with a small height inside a ScrollView would cause the entire page to scroll#27948
PureWeen merged 5 commits intodotnet:inflight/currentfrom
Tamilarasan-Paranthaman:fix-27750

Conversation

@Tamilarasan-Paranthaman
Copy link
Member

Root Cause of the issue

  • The issue occurred because cursorRect.Bottom was used instead of cursorRect.Y when determining whether the cursor was outside the visible area of the UITextView.

  • With a small editor height, the cursor's bottom edge extended beyond the visible area, incorrectly meeting the condition and triggering scrolling. This led to the move value being calculated based on the parent ScrollView, causing unnecessary scrolling.

  • Previously, cursorRect.Y was used instead of cursorRect.Bottom, but a recent PR modified this behavior, introducing a regression in .NET 9.

Description of Change

  • I have replaced cursorRect.Bottom with cursorRect.Y, restoring the original logic from before the regression. To check if the cursor is outside, I believe we can use cursorRect.Y because it is also meaningful in this context. This fix resolves the reported issue by ensuring that scrolling only occurs when the cursor is completely out of view, preventing unnecessary movement.

Issues Fixed

Fixes #27750

Tested the behaviour in the following platforms

  • iOS
  • Android
  • Windows
  • Mac

Screenshot

Before Issue Fix After Issue Fix
Before-Fix.mov
After-Fix.mov

@dotnet-policy-service dotnet-policy-service bot added community ✨ Community Contribution partner/syncfusion Issues / PR's with Syncfusion collaboration labels Feb 21, 2025
@jsuarezruiz
Copy link
Contributor

/azp run

@azure-pipelines
Copy link

Azure Pipelines successfully started running 3 pipeline(s).

@Tamilarasan-Paranthaman Tamilarasan-Paranthaman marked this pull request as ready for review February 24, 2025 13:53
Copilot AI review requested due to automatic review settings February 24, 2025 13:53
@Tamilarasan-Paranthaman Tamilarasan-Paranthaman requested a review from a team as a code owner February 24, 2025 13:53
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Copilot reviewed 7 out of 7 changed files in this pull request and generated no comments.

Comments suppressed due to low confidence (1)

src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue27750.cs:1

  • The file contains a BOM (Byte Order Mark) character at the beginning, which should be removed.
using NUnit.Framework;

@jsuarezruiz
Copy link
Contributor

/rebase

@jsuarezruiz
Copy link
Contributor

/azp run

@azure-pipelines
Copy link

Azure Pipelines successfully started running 3 pipeline(s).

@jsuarezruiz
Copy link
Contributor

/rebase

@jsuarezruiz
Copy link
Contributor

/rebase

@jsuarezruiz
Copy link
Contributor

/azp run

@azure-pipelines
Copy link

Azure Pipelines successfully started running 3 pipeline(s).

@jsuarezruiz
Copy link
Contributor

/rebase

@jsuarezruiz
Copy link
Contributor

/rebase

@jsuarezruiz
Copy link
Contributor

/azp run MAUI-UITests-public

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@github-actions
Copy link
Contributor

github-actions bot commented Dec 9, 2025

🚀 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 -- 27948

Or

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

Copy link
Contributor

@StephaneDelcroix StephaneDelcroix left a comment

Choose a reason for hiding this comment

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

✅ Approved

The fix is correct and safe to merge.

Analysis Summary

The single-line change from cursorRect.Bottom to cursorRect.Y at line 452 of KeyboardAutoManagerScroll.cs correctly fixes the regression where small-height Editors inside ScrollViews triggered unnecessary page scrolling.

Why This Is Safe

  1. Semantically correct: Using cursorRect.Y only triggers scrolling when the cursor's TOP is at/below the view's bottom (completely out of view), preventing false positives for small Editors

  2. No regression on PR #24589 scenarios: The Issue19214 tests (cursor stays above keyboard while typing) are handled by ApplyContentInset() - a completely separate code path unaffected by this change

  3. Good test coverage: Includes UI test with screenshots for all platforms

  4. Minimal, focused change: Single line fix that directly addresses the root cause

LGTM! 🚀

@sheiksyedm
Copy link
Contributor

/rebase

@PureWeen PureWeen changed the base branch from main to inflight/current December 22, 2025 17:31
@PureWeen PureWeen merged commit 3522f5b into dotnet:inflight/current Dec 22, 2025
135 of 161 checks passed
PureWeen pushed a commit that referenced this pull request Dec 22, 2025
…ollView would cause the entire page to scroll (#27948)

### Root Cause of the issue 

- The issue occurred because cursorRect.Bottom was used instead of
cursorRect.Y when determining whether the cursor was outside the visible
area of the UITextView.

- With a small editor height, the cursor's bottom edge extended beyond
the visible area, incorrectly meeting the condition and triggering
scrolling. This led to the move value being calculated based on the
parent ScrollView, causing unnecessary scrolling.

- Previously, cursorRect.Y was used instead of cursorRect.Bottom, but a
recent [PR](#24589) modified this
behavior, introducing a regression in .NET 9.
 

### Description of Change

- I have replaced cursorRect.Bottom with cursorRect.Y, restoring the
original logic from before the regression. To check if the cursor is
outside, I believe we can use cursorRect.Y because it is also meaningful
in this context. This fix resolves the reported issue by ensuring that
scrolling only occurs when the cursor is completely out of view,
preventing unnecessary movement.

### Issues Fixed

Fixes #27750

### Tested the behaviour in the following platforms

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

### Screenshot

| Before Issue Fix | After Issue Fix |
|----------|----------|
| <video
src="https://github.com/user-attachments/assets/42fa84ae-5d87-4ec8-81c5-9b4222e884c7">
| <video
src="https://github.com/user-attachments/assets/9f06200e-1448-4e74-bf13-61ea8e169acf">
|
PureWeen pushed a commit that referenced this pull request Dec 26, 2025
…ollView would cause the entire page to scroll (#27948)

### Root Cause of the issue 

- The issue occurred because cursorRect.Bottom was used instead of
cursorRect.Y when determining whether the cursor was outside the visible
area of the UITextView.

- With a small editor height, the cursor's bottom edge extended beyond
the visible area, incorrectly meeting the condition and triggering
scrolling. This led to the move value being calculated based on the
parent ScrollView, causing unnecessary scrolling.

- Previously, cursorRect.Y was used instead of cursorRect.Bottom, but a
recent [PR](#24589) modified this
behavior, introducing a regression in .NET 9.
 

### Description of Change

- I have replaced cursorRect.Bottom with cursorRect.Y, restoring the
original logic from before the regression. To check if the cursor is
outside, I believe we can use cursorRect.Y because it is also meaningful
in this context. This fix resolves the reported issue by ensuring that
scrolling only occurs when the cursor is completely out of view,
preventing unnecessary movement.

### Issues Fixed

Fixes #27750

### Tested the behaviour in the following platforms

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

### Screenshot

| Before Issue Fix | After Issue Fix |
|----------|----------|
| <video
src="https://github.com/user-attachments/assets/42fa84ae-5d87-4ec8-81c5-9b4222e884c7">
| <video
src="https://github.com/user-attachments/assets/9f06200e-1448-4e74-bf13-61ea8e169acf">
|
PureWeen pushed a commit that referenced this pull request Dec 30, 2025
…ollView would cause the entire page to scroll (#27948)

### Root Cause of the issue 

- The issue occurred because cursorRect.Bottom was used instead of
cursorRect.Y when determining whether the cursor was outside the visible
area of the UITextView.

- With a small editor height, the cursor's bottom edge extended beyond
the visible area, incorrectly meeting the condition and triggering
scrolling. This led to the move value being calculated based on the
parent ScrollView, causing unnecessary scrolling.

- Previously, cursorRect.Y was used instead of cursorRect.Bottom, but a
recent [PR](#24589) modified this
behavior, introducing a regression in .NET 9.
 

### Description of Change

- I have replaced cursorRect.Bottom with cursorRect.Y, restoring the
original logic from before the regression. To check if the cursor is
outside, I believe we can use cursorRect.Y because it is also meaningful
in this context. This fix resolves the reported issue by ensuring that
scrolling only occurs when the cursor is completely out of view,
preventing unnecessary movement.

### Issues Fixed

Fixes #27750

### Tested the behaviour in the following platforms

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

### Screenshot

| Before Issue Fix | After Issue Fix |
|----------|----------|
| <video
src="https://github.com/user-attachments/assets/42fa84ae-5d87-4ec8-81c5-9b4222e884c7">
| <video
src="https://github.com/user-attachments/assets/9f06200e-1448-4e74-bf13-61ea8e169acf">
|
github-actions bot pushed a commit that referenced this pull request Dec 30, 2025
…ollView would cause the entire page to scroll (#27948)

### Root Cause of the issue 

- The issue occurred because cursorRect.Bottom was used instead of
cursorRect.Y when determining whether the cursor was outside the visible
area of the UITextView.

- With a small editor height, the cursor's bottom edge extended beyond
the visible area, incorrectly meeting the condition and triggering
scrolling. This led to the move value being calculated based on the
parent ScrollView, causing unnecessary scrolling.

- Previously, cursorRect.Y was used instead of cursorRect.Bottom, but a
recent [PR](#24589) modified this
behavior, introducing a regression in .NET 9.
 

### Description of Change

- I have replaced cursorRect.Bottom with cursorRect.Y, restoring the
original logic from before the regression. To check if the cursor is
outside, I believe we can use cursorRect.Y because it is also meaningful
in this context. This fix resolves the reported issue by ensuring that
scrolling only occurs when the cursor is completely out of view,
preventing unnecessary movement.

### Issues Fixed

Fixes #27750

### Tested the behaviour in the following platforms

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

### Screenshot

| Before Issue Fix | After Issue Fix |
|----------|----------|
| <video
src="https://github.com/user-attachments/assets/42fa84ae-5d87-4ec8-81c5-9b4222e884c7">
| <video
src="https://github.com/user-attachments/assets/9f06200e-1448-4e74-bf13-61ea8e169acf">
|
PureWeen pushed a commit that referenced this pull request Jan 5, 2026
…ollView would cause the entire page to scroll (#27948)

### Root Cause of the issue 

- The issue occurred because cursorRect.Bottom was used instead of
cursorRect.Y when determining whether the cursor was outside the visible
area of the UITextView.

- With a small editor height, the cursor's bottom edge extended beyond
the visible area, incorrectly meeting the condition and triggering
scrolling. This led to the move value being calculated based on the
parent ScrollView, causing unnecessary scrolling.

- Previously, cursorRect.Y was used instead of cursorRect.Bottom, but a
recent [PR](#24589) modified this
behavior, introducing a regression in .NET 9.
 

### Description of Change

- I have replaced cursorRect.Bottom with cursorRect.Y, restoring the
original logic from before the regression. To check if the cursor is
outside, I believe we can use cursorRect.Y because it is also meaningful
in this context. This fix resolves the reported issue by ensuring that
scrolling only occurs when the cursor is completely out of view,
preventing unnecessary movement.

### Issues Fixed

Fixes #27750

### Tested the behaviour in the following platforms

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

### Screenshot

| Before Issue Fix | After Issue Fix |
|----------|----------|
| <video
src="https://github.com/user-attachments/assets/42fa84ae-5d87-4ec8-81c5-9b4222e884c7">
| <video
src="https://github.com/user-attachments/assets/9f06200e-1448-4e74-bf13-61ea8e169acf">
|
@PureWeen PureWeen mentioned this pull request Jan 7, 2026
PureWeen pushed a commit that referenced this pull request Jan 9, 2026
…ollView would cause the entire page to scroll (#27948)

### Root Cause of the issue 

- The issue occurred because cursorRect.Bottom was used instead of
cursorRect.Y when determining whether the cursor was outside the visible
area of the UITextView.

- With a small editor height, the cursor's bottom edge extended beyond
the visible area, incorrectly meeting the condition and triggering
scrolling. This led to the move value being calculated based on the
parent ScrollView, causing unnecessary scrolling.

- Previously, cursorRect.Y was used instead of cursorRect.Bottom, but a
recent [PR](#24589) modified this
behavior, introducing a regression in .NET 9.
 

### Description of Change

- I have replaced cursorRect.Bottom with cursorRect.Y, restoring the
original logic from before the regression. To check if the cursor is
outside, I believe we can use cursorRect.Y because it is also meaningful
in this context. This fix resolves the reported issue by ensuring that
scrolling only occurs when the cursor is completely out of view,
preventing unnecessary movement.

### Issues Fixed

Fixes #27750

### Tested the behaviour in the following platforms

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

### Screenshot

| Before Issue Fix | After Issue Fix |
|----------|----------|
| <video
src="https://github.com/user-attachments/assets/42fa84ae-5d87-4ec8-81c5-9b4222e884c7">
| <video
src="https://github.com/user-attachments/assets/9f06200e-1448-4e74-bf13-61ea8e169acf">
|
PureWeen pushed a commit that referenced this pull request Jan 9, 2026
…ollView would cause the entire page to scroll (#27948)

### Root Cause of the issue 

- The issue occurred because cursorRect.Bottom was used instead of
cursorRect.Y when determining whether the cursor was outside the visible
area of the UITextView.

- With a small editor height, the cursor's bottom edge extended beyond
the visible area, incorrectly meeting the condition and triggering
scrolling. This led to the move value being calculated based on the
parent ScrollView, causing unnecessary scrolling.

- Previously, cursorRect.Y was used instead of cursorRect.Bottom, but a
recent [PR](#24589) modified this
behavior, introducing a regression in .NET 9.
 

### Description of Change

- I have replaced cursorRect.Bottom with cursorRect.Y, restoring the
original logic from before the regression. To check if the cursor is
outside, I believe we can use cursorRect.Y because it is also meaningful
in this context. This fix resolves the reported issue by ensuring that
scrolling only occurs when the cursor is completely out of view,
preventing unnecessary movement.

### Issues Fixed

Fixes #27750

### Tested the behaviour in the following platforms

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

### Screenshot

| Before Issue Fix | After Issue Fix |
|----------|----------|
| <video
src="https://github.com/user-attachments/assets/42fa84ae-5d87-4ec8-81c5-9b4222e884c7">
| <video
src="https://github.com/user-attachments/assets/9f06200e-1448-4e74-bf13-61ea8e169acf">
|
PureWeen pushed a commit that referenced this pull request Jan 9, 2026
…ollView would cause the entire page to scroll (#27948)

### Root Cause of the issue 

- The issue occurred because cursorRect.Bottom was used instead of
cursorRect.Y when determining whether the cursor was outside the visible
area of the UITextView.

- With a small editor height, the cursor's bottom edge extended beyond
the visible area, incorrectly meeting the condition and triggering
scrolling. This led to the move value being calculated based on the
parent ScrollView, causing unnecessary scrolling.

- Previously, cursorRect.Y was used instead of cursorRect.Bottom, but a
recent [PR](#24589) modified this
behavior, introducing a regression in .NET 9.
 

### Description of Change

- I have replaced cursorRect.Bottom with cursorRect.Y, restoring the
original logic from before the regression. To check if the cursor is
outside, I believe we can use cursorRect.Y because it is also meaningful
in this context. This fix resolves the reported issue by ensuring that
scrolling only occurs when the cursor is completely out of view,
preventing unnecessary movement.

### Issues Fixed

Fixes #27750

### Tested the behaviour in the following platforms

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

### Screenshot

| Before Issue Fix | After Issue Fix |
|----------|----------|
| <video
src="https://github.com/user-attachments/assets/42fa84ae-5d87-4ec8-81c5-9b4222e884c7">
| <video
src="https://github.com/user-attachments/assets/9f06200e-1448-4e74-bf13-61ea8e169acf">
|
PureWeen pushed a commit that referenced this pull request Jan 13, 2026
…ollView would cause the entire page to scroll (#27948)

### Root Cause of the issue 

- The issue occurred because cursorRect.Bottom was used instead of
cursorRect.Y when determining whether the cursor was outside the visible
area of the UITextView.

- With a small editor height, the cursor's bottom edge extended beyond
the visible area, incorrectly meeting the condition and triggering
scrolling. This led to the move value being calculated based on the
parent ScrollView, causing unnecessary scrolling.

- Previously, cursorRect.Y was used instead of cursorRect.Bottom, but a
recent [PR](#24589) modified this
behavior, introducing a regression in .NET 9.
 

### Description of Change

- I have replaced cursorRect.Bottom with cursorRect.Y, restoring the
original logic from before the regression. To check if the cursor is
outside, I believe we can use cursorRect.Y because it is also meaningful
in this context. This fix resolves the reported issue by ensuring that
scrolling only occurs when the cursor is completely out of view,
preventing unnecessary movement.

### Issues Fixed

Fixes #27750

### Tested the behaviour in the following platforms

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

### Screenshot

| Before Issue Fix | After Issue Fix |
|----------|----------|
| <video
src="https://github.com/user-attachments/assets/42fa84ae-5d87-4ec8-81c5-9b4222e884c7">
| <video
src="https://github.com/user-attachments/assets/9f06200e-1448-4e74-bf13-61ea8e169acf">
|
PureWeen pushed a commit that referenced this pull request Jan 13, 2026
…ollView would cause the entire page to scroll (#27948)

### Root Cause of the issue 

- The issue occurred because cursorRect.Bottom was used instead of
cursorRect.Y when determining whether the cursor was outside the visible
area of the UITextView.

- With a small editor height, the cursor's bottom edge extended beyond
the visible area, incorrectly meeting the condition and triggering
scrolling. This led to the move value being calculated based on the
parent ScrollView, causing unnecessary scrolling.

- Previously, cursorRect.Y was used instead of cursorRect.Bottom, but a
recent [PR](#24589) modified this
behavior, introducing a regression in .NET 9.
 

### Description of Change

- I have replaced cursorRect.Bottom with cursorRect.Y, restoring the
original logic from before the regression. To check if the cursor is
outside, I believe we can use cursorRect.Y because it is also meaningful
in this context. This fix resolves the reported issue by ensuring that
scrolling only occurs when the cursor is completely out of view,
preventing unnecessary movement.

### Issues Fixed

Fixes #27750

### Tested the behaviour in the following platforms

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

### Screenshot

| Before Issue Fix | After Issue Fix |
|----------|----------|
| <video
src="https://github.com/user-attachments/assets/42fa84ae-5d87-4ec8-81c5-9b4222e884c7">
| <video
src="https://github.com/user-attachments/assets/9f06200e-1448-4e74-bf13-61ea8e169acf">
|
PureWeen added a commit that referenced this pull request Jan 13, 2026
## What's Coming

.NET MAUI inflight/candidate introduces significant improvements across
all platforms with focus on quality, performance, and developer
experience. This release includes 27 commits with various improvements,
bug fixes, and enhancements.

## CollectionView
- [iOS][CV2] Fix page can be dragged down, and it would cause an extra
space between Header and EmptyView text by @devanathan-vaithiyanathan in
#31840
  <details>
  <summary>🔧 Fixes</summary>

- [I8_Header_and_Footer_Null - The page can be dragged down, and it
would cause an extra space between Header and EmptyView
text.](#31465)
  </details>

- [iOS] Fixed the Items not displayed properly in CarouselView2 by
@Ahamed-Ali in #31336
  <details>
  <summary>🔧 Fixes</summary>

- [[iOS] Items are not updated properly in
CarouselView2.](#31148)
  </details>

## Docs
- Improve Controls Core API docs by @jfversluis in
#33240

## Editor
- [iOS] Fixed an issue where an Editor with a small height inside a
ScrollView would cause the entire page to scroll by
@Tamilarasan-Paranthaman in #27948
  <details>
  <summary>🔧 Fixes</summary>

- [[iOS][Editor] An Editor that has not enough height and resides inside
a ScrollView/CollectionView will scroll the entire
page](#27750)
  </details>

## Image
- [Android] Image control crashes on Android when image width exceeds
height by @KarthikRajaKalaimani in
#33045
  <details>
  <summary>🔧 Fixes</summary>

- [Image control crashes on Android when image width exceeds
height](#32869)
  </details>

## Mediapicker
- [Android 🤖] Add a log telling why the request is cancelled by @pictos
in #33295
  <details>
  <summary>🔧 Fixes</summary>

- [MediaPicker.PickPhotosAsync throwing TaskCancelledException in
net10-android](#33283)
  </details>

## Navigation
- [Android] Fix for App Hang When PopModalAsync Is Called Immediately
After PushModalAsync with Task.Yield() by @BagavathiPerumal in
#32479
  <details>
  <summary>🔧 Fixes</summary>

- [App hangs if PopModalAsync is called after PushModalAsync with single
await Task.Yield()](#32310)
  </details>

- [iOS 26] Navigation hangs after rapidly open and closing new page
using Navigation.PushAsync - fix by @kubaflo in
#32456
  <details>
  <summary>🔧 Fixes</summary>

- [[iOS 26] Navigation hangs after rapidly open and closing new page
using Navigation.PushAsync](#32425)
  </details>

## Pages
- [iOS] Fix ContentPage BackgroundImageSource not working by
@Shalini-Ashokan in #33297
  <details>
  <summary>🔧 Fixes</summary>

- [.Net MAUI- Page.BackgroundImageSource not working for
iOS](#21594)
  </details>

## RadioButton
- [Issue-Resolver] Fix #33264 - RadioButtonGroup not working with
Collection View by @kubaflo in #33343
  <details>
  <summary>🔧 Fixes</summary>

- [RadioButtonGroup not working with
CollectionView](#33264)
  </details>

## SafeArea
- [Android] Fixed Label Overlapped by Android Status Bar When Using
SafeAreaEdges="Container" in .NET MAUI by @NirmalKumarYuvaraj in
#33285
  <details>
  <summary>🔧 Fixes</summary>

- [SafeAreaEdges works correctly only on the first tab in Shell. Other
tabs have content colliding with the display cutout in the landscape
mode.](#33034)
- [Label Overlapped by Android Status Bar When Using
SafeAreaEdges="Container" in .NET
MAUI](#32941)
- [[MAUI 10] Layout breaks on first navigation (Shell // route) until
soft keyboard appears/disappears (Android +
iOS)](#33038)
  </details>

## ScrollView
- [Windows, Android] Fix ScrollView Content Not Removed When Set to Null
by @devanathan-vaithiyanathan in
#33069
  <details>
  <summary>🔧 Fixes</summary>

- [[Windows, Android] ScrollView Content Not Removed When Set to
Null](#33067)
  </details>

## Searchbar
- Fix Android crash when changing shared Drawable tint on Searchbar by
@tritter in #33071
  <details>
  <summary>🔧 Fixes</summary>

- [[Android] Crash on changing Tint of
Searchbar](#33070)
  </details>

## Shell
- [iOS] - Fix Custom FlyoutIcon from Being Overridden to Default Color
in Shell by @prakashKannanSf3972 in
#27580
  <details>
  <summary>🔧 Fixes</summary>

- [Change the flyout icon
color](#6738)
  </details>

- [iOS] Fix Shell NavBarIsVisible updates when switching ShellContent by
@Vignesh-SF3580 in #33195
  <details>
  <summary>🔧 Fixes</summary>

- [[iOS] Shell NavBarIsVisible is not updated when changing
ShellContent](#33191)
  </details>

## Slider
- [C] Fix Slider and Stepper property order independence by
@StephaneDelcroix in #32939
  <details>
  <summary>🔧 Fixes</summary>

- [Slider Binding Initialization Order Causes Incorrect Value Assignment
in XAML](#32903)
- [Slider is very broken, Value is a mess when setting
Minimum](#14472)
- [Slider is buggy depending on order of
properties](#18910)
- [Stepper Value is incorrectly clamped to default min/max when using
bindableproperties in MVVM
pattern](#12243)
- [[Issue-Resolver] Fix #32903 - Sliderbinding initialization order
issue](#32907)
  </details>

## Stepper
- [Windows] Maui Stepper: Clamp minimum and maximum value by @OomJan in
#33275
  <details>
  <summary>🔧 Fixes</summary>

- [[Windows] Maui Stepper is not clamped to minimum or maximum
internally](#33274)
  </details>

- [iOS] Fixed the UIStepper Value from being clamped based on old higher
MinimumValue - Candidate PR test failure fix- 33363 by @Ahamed-Ali in
#33392

## TabbedPage
- [windows] Fixed Rapid change of selected tab results in crash. by
@praveenkumarkarunanithi in #33113
  <details>
  <summary>🔧 Fixes</summary>

- [Rapid change of selected tab results in crash on
Windows.](#32824)
  </details>

## Titlebar
- [Mac] Fix TitleBar Content Overlapping with Traffic Light Buttons on
Latest macOS Version by @devanathan-vaithiyanathan in
#33157
  <details>
  <summary>🔧 Fixes</summary>

- [TitleBar Content Overlapping with Traffic Light Buttons on Latest
macOS Version](#33136)
  </details>

## Xaml
- Fix for Control does not update from binding anymore after
MultiBinding.ConvertBack is called by @BagavathiPerumal in
#33128
  <details>
  <summary>🔧 Fixes</summary>

- [Control does not update from binding anymore after
MultiBinding.ConvertBack is
called](#24969)
- [The issue with the MultiBinding converter with two way binding mode
does not work properly when changing the
values.](#20382)
  </details>


<details>
<summary>🔧 Infrastructure (1)</summary>

- Avoid KVO on CALayer by introducing an Apple PlatformInterop by
@albyrock87 in #30861

</details>

<details>
<summary>🧪 Testing (2)</summary>

- [Testing] Enable UITest Issue18193 on MacCatalyst by @NafeelaNazhir in
#31653
  <details>
  <summary>🔧 Fixes</summary>

- [Test Issue18193 was disabled on Mac
Catalyst](#27206)
  </details>
- Set the CV2 handlers as the default by @Ahamed-Ali in
#33177

</details>

<details>
<summary>📦 Other (3)</summary>

- Update WindowsAppSDK to 1.8 by @mattleibow in
#32174
  <details>
  <summary>🔧 Fixes</summary>

- [Update to WindowsAppSDK](#30858)
  </details>
- Fix command dependency reentrancy by @simonrozsival in
#33129
- Fix SafeArea AdjustPan handling and add AdjustNothing mode tests by
@PureWeen via @Copilot in #33354

</details>
**Full Changelog**:
main...inflight/candidate
kubaflo pushed a commit to kubaflo/maui that referenced this pull request Jan 16, 2026
…ollView would cause the entire page to scroll (dotnet#27948)

### Root Cause of the issue 

- The issue occurred because cursorRect.Bottom was used instead of
cursorRect.Y when determining whether the cursor was outside the visible
area of the UITextView.

- With a small editor height, the cursor's bottom edge extended beyond
the visible area, incorrectly meeting the condition and triggering
scrolling. This led to the move value being calculated based on the
parent ScrollView, causing unnecessary scrolling.

- Previously, cursorRect.Y was used instead of cursorRect.Bottom, but a
recent [PR](dotnet#24589) modified this
behavior, introducing a regression in .NET 9.
 

### Description of Change

- I have replaced cursorRect.Bottom with cursorRect.Y, restoring the
original logic from before the regression. To check if the cursor is
outside, I believe we can use cursorRect.Y because it is also meaningful
in this context. This fix resolves the reported issue by ensuring that
scrolling only occurs when the cursor is completely out of view,
preventing unnecessary movement.

### Issues Fixed

Fixes dotnet#27750

### Tested the behaviour in the following platforms

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

### Screenshot

| Before Issue Fix | After Issue Fix |
|----------|----------|
| <video
src="https://github.com/user-attachments/assets/42fa84ae-5d87-4ec8-81c5-9b4222e884c7">
| <video
src="https://github.com/user-attachments/assets/9f06200e-1448-4e74-bf13-61ea8e169acf">
|
@github-actions github-actions bot locked and limited conversation to collaborators Jan 22, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-controls-editor Editor community ✨ Community Contribution partner/syncfusion Issues / PR's with Syncfusion collaboration platform/ios

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[iOS][Editor] An Editor that has not enough height and resides inside a ScrollView/CollectionView will scroll the entire page

6 participants