with one click
nalu-maui-core
// Nalu.Maui.Core utilities for soft keyboard handling and background iOS HTTP. Use when configuring soft keyboard (Resize/Pan), binding to keyboard state, or handling HTTP when the app is backgrounded on iOS.
// Nalu.Maui.Core utilities for soft keyboard handling and background iOS HTTP. Use when configuring soft keyboard (Resize/Pan), binding to keyboard state, or handling HTTP when the app is backgrounded on iOS.
| name | nalu-maui-core |
| description | Nalu.Maui.Core utilities for soft keyboard handling and background iOS HTTP. Use when configuring soft keyboard (Resize/Pan), binding to keyboard state, or handling HTTP when the app is backgrounded on iOS. |
Utilities for soft keyboard management and iOS background HTTP requests.
No explicit UseNalu* in MauiProgram for Core; use the types and attachables below. For background HTTP on iOS, configure AppDelegate (see Caveats).
builder.UseNaluSoftKeyboardManager(defaultAdjustMode: SoftKeyboardAdjustMode.Resize).naluCore:SoftKeyboardManager.SoftKeyboardAdjustMode="Pan" (ancestors are searched for first specified mode).SoftKeyboardManager.State (e.g. IsHidden) to show/hide areas when keyboard is visible.<VerticalStackLayout naluCore:SoftKeyboardManager.SoftKeyboardAdjustMode="Pan">
<Entry />
</VerticalStackLayout>
<VerticalStackLayout.IsVisible>
<Binding Path="IsHidden" Source="{x:Static nalu:SoftKeyboardManager.State}" x:DataType="nalu:SoftKeyboardState" />
</VerticalStackLayout.IsVisible>
Use NSUrlBackgroundSessionHttpMessageHandler so requests continue when the app is backgrounded:
#if IOS
HttpClient client = DeviceInfo.DeviceType == DeviceType.Virtual
? new()
: new(new NSUrlBackgroundSessionHttpMessageHandler());
#else
HttpClient client = new();
#endif
In AppDelegate:
[Export("application:handleEventsForBackgroundURLSession:completionHandler:")]
public virtual void HandleEventsForBackgroundUrl(UIApplication application, string sessionIdentifier, Action completionHandler)
=> NSUrlBackgroundSessionHttpMessageHandler.HandleEventsForBackgroundUrl(application, sessionIdentifier, completionHandler);
For app crash/termination during a request: add header NSUrlBackgroundSessionHttpMessageHandler.RequestIdentifierHeaderName and implement INSUrlBackgroundSessionLostMessageHandler to handle the lost response.
CollectionView that contains input fields (resize causes jumps). Use the VirtualScroll component instead (Nalu.Maui.VirtualScroll).using block within a few seconds in background or iOS may terminate the app.Nalu.Maui.VirtualScroll: high-performance virtualized list (RecyclerView/UICollectionView). Use when building lists, carousels, sectioned data, pull-to-refresh, drag-and-drop reorder, or replacing MAUI CollectionView for performance.
Nalu.Maui.Controls: InteractableCanvasView (touch-enabled SkiaSharp) and DurationWheel (TimeSpan? picker). Use when adding touch handling to a canvas or a duration input control.
Nalu.Maui.Layouts: ViewBox, TemplateBox, ToggleTemplate, ExpanderViewBox, Wrap layouts, Popups, Magnet. Use when scoping BindingContext, conditional templates, expandable content, flow layouts, modal popups, or constraint-based layout in MAUI XAML.
Nalu.Maui.Navigation: type-safe MVVM navigation with Shell, lifecycle events, intents, and guards. Use when setting up navigation, passing parameters, preventing navigation (unsaved changes), custom tab bar, or testing navigation in MAUI.