MAUI Entry ๋ฐ‘์ค„

MAUI๋กœ IP์Šค์บ” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ ์ค‘์ž…๋‹ˆ๋‹ค. IP์ž…๋ ฅํ•˜๋Š” Entry์— Focus๋์„๋•Œ๋Š” ๊ฒ€์ •์ƒ‰ Focus๊ฐ€ ๋น ์ง€๋ฉด ํšŒ์ƒ‰์œผ๋กœ ์ฒ˜๋ฆฌ ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ๊ฐ’์œผ๋กœ Focus ๋์„ ๋•Œ ํŒŒ๋ž€์ƒ‰ ๋ฐ‘์ค„์ด ๋“ค์–ด์žˆ์–ด์„œ ํšŒ์ƒ‰์œผ๋กœ ๋ฐ”๊พธ๊ฒŒ ์„ค์ • ํ–ˆ๋”๋‹ˆ ๋‘์ค„๋กœ ๋‚˜์˜ค๋Š” ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค.

์–ด๋–ป๊ฒŒ๋“ค ํ•ด๊ฒฐํ•˜์‹œ๋‚˜์š”? ๊ฒ€์ƒ‰ ํ•ด๋ณด๋‹ˆ Entry์— ๋ฐ‘์ค„ ๋นผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ๋˜๋ฐ ๋‹ค๋“ค ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์“ฐ์‹œ๋‚˜์š”?

xaml

<Entry x:Name="StartIpEntry"
  Text="192.168.0.1"
  Keyboard="Default"
  Placeholder="Start IP"
  FontSize="20"
  HorizontalTextAlignment="Center"
  BackgroundColor="Transparent"
  TextChanged="OnStartIpTextChanged" />

cs

public IpScanPage()
{
      InitializeComponent();
      BindingContext = this;

      // ๋ฐ‘์ค„ ์„ค์ • ํ•˜๋Š” ๋ถ€๋ถ„
      StartIpEntry.Focused += (s, e) => StartIpUnderline.Color = Color.FromArgb("#1E3A5F");
      StartIpEntry.Unfocused += (s, e) => StartIpUnderline.Color = Color.FromArgb("#9E9E9E");

      EndIpEntry.Focused += (s, e) => EndIpUnderline.Color = Color.FromArgb("#1E3A5F");
      EndIpEntry.Unfocused += (s, e) => EndIpUnderline.Color = Color.FromArgb("#9E9E9E");
}
1 Like

๋ง์”€ํ•˜์‹  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ œ๊ฐ€ ์ƒ๊ฐํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ผ๋ฉด ๋„ค์ดํ‹ฐ๋ธŒ ์ปจํŠธ๋กค์— ์ง์ ‘ ์ ‘๊ทผํ•˜์—ฌ Border ์ปฌ๋Ÿฌ(๋ฐ‘์ค„)๋ฅผ ์ง€์šฐ๋Š” ๋ฐฉ์‹์ด๋ผ์„œ ์ง์ ‘๊ตฌํ˜„ํ•˜์—ฌ ์“ฐ์…”๋„ ์ƒ๊ด€์—†์Šต๋‹ˆ๋‹ค.

๋‹ค๋งŒ, ์˜ฌ๋ ค์ฃผ์‹  ์˜ˆ์ œ๋Š” ๋„ค์ดํ‹ฐ๋ธŒ ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์ปจํŠธ๋กค์— ์ ‘๊ทผํ•˜์—ฌ ํ•œ ๋ฐฉ์‹์ด ์•„๋‹™๋‹ˆ๋‹ค.

์•„๋ž˜์™€ ๊ฐ™์€ ์ฝ”๋“œ(Gemini์š”์ฒญ์œผ๋กœ ๋งŒ๋“  ์˜ˆ์ œ์ด๊ธฐ์— ํ‹€๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.)

// Entry ๋ฐ‘์ค„ ์ œ๊ฑฐ ํ•ธ๋“ค๋Ÿฌ ์ถ”๊ฐ€
    Microsoft.Maui.Handlers.EntryHandler.Mapper.AppendToMapping("NoUnderline", (handler, view) =>
    {
#if ANDROID
        // ์•ˆ๋“œ๋กœ์ด๋“œ: ๋ฐฐ๊ฒฝ์ƒ‰์„ ํˆฌ๋ช…ํ•˜๊ฒŒ ํ•˜๊ฑฐ๋‚˜ null๋กœ ์„ค์ •ํ•˜์—ฌ ๋ฐ‘์ค„ ์ œ๊ฑฐ
        handler.PlatformView.BackgroundTintList = Android.Content.Res.ColorStateList.ValueOf(Android.Graphics.Color.Transparent);
#elif IOS || MACCATALYST
        // iOS: ํ…Œ๋‘๋ฆฌ ์Šคํƒ€์ผ์„ None์œผ๋กœ ์„ค์ •
        handler.PlatformView.BorderStyle = UIKit.UITextBorderStyle.None;
#endif
    });

ํ”Œ๋žซํผ๋ณ„ ํ•ธ๋“ค๋Ÿฌ ์„ค์ •์ด ๋ณต์žกํ•˜๊ณ , OS๋ณ„ ๋””์ž์ธ ํŒŒํŽธํ™”๊ฐ€ ๋ถ€๋‹ด๋œ๋‹ค๋ฉด DrawnUI ๋ฅผ ์‚ฌ์šฉ์„ ๊ณ ๋ คํ•ด๋ณผ ๋งŒํ•ฉ๋‹ˆ๋‹ค.

DrawnUI๋Š” ๊ฐ OS์˜ ๋„ค์ดํ‹ฐ๋ธŒ ์ปจํŠธ๋กค์— ์˜์กดํ•˜์ง€ ์•Š๊ณ , Skia ๊ธฐ๋ฐ˜์œผ๋กœ ์ง์ ‘ ์ปจํŠธ๋กค์„ ๋ Œ๋”๋งํ•˜๋Š” ๋ฐฉ์‹์ด๊ธฐ ๋•Œ๋ฌธ์—
๋ชจ๋“  ํ”Œ๋žซํผ์—์„œ ๋™์ผํ•œ UI๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ”ฝ์…€ ๋‹จ์œ„๊นŒ์ง€ ์ผ๊ด€๋œ(ํผํŽ™ํŠธ ํ”ฝ์…€) ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

1 Like