Xamarin.forms: エントリのIsPasswordプロパティは、プログラムで変更された場合、Macアプリの画面のテキストをマスク/マスク解除しません

作成日 2018年04月02日  ·  3コメント  ·  ソース: xamarin/Xamarin.Forms

説明

エントリのIsPasswordプロパティがXamarinFormsで動的に変更された場合、XamarinFormsと統合されたXamarinMacアプリには反映されません。

再現する手順

  1. XamarinFormsアプリでpasswordという名前のエントリを作成します
  2. XamlでIsPasswordプロパティをtrueに設定します。
  3. クリックハンドラtoggle_clickedを使用してtoggleという名前のボタンを作成します
  4. ハンドラーで、password.IsPassword = false;を変更します。
  5. エントリにテキストを追加します
  6. トグルボタンをクリックします

予想される行動

パスワードエントリのテキストはマスクを解除する必要があります

実際の動作

エントリ内のテキストはまだマスクされています
その逆でも期待どおりに機能していません

注:これはMacでのみ発生します(iOS、Android、UWPはこれに適しています)

基本情報

  • 問題のあるバージョン:Xamarinフォーム:2.5.0.280555
  • 最後に知られている良いバージョン:
  • IDE:Mac用のVisual Studio
  • プラットフォームターゲットフレームワーク:

    • iOS:

    • アンドロイド:

    • UWP:

    • Mac:4.2.1.28

  • Androidサポートライブラリバージョン:
  • Nugetパッケージ:
  • 影響を受けるデバイス:Macアプリ

スクリーンショット

複製リンク

6 low impact macOS bug

全てのコメント3件

私は同じ問題を経験しています、それはMacでのみ起こります。 WPFとGTKでテストしましたが、問題なく動作します。

これは、このコードが実装されていないためです。 残念ながら、これをmacOSに実装するのは簡単ではありません。これは、Macでは「パスワードオン」コントロール( NSSecureTextField )が「パスワードオフ」コントロール( NSTextField )とは完全に別のクラスであるためです。 これをEntryRenderer実装するには、 IsPasswordが変更されるたびにネイティブコントロールを再作成する必要があります。

NSSecureTextFieldは箇条書きの削除をサポートしていますが( -[NSSecureTextFieldCell echosBullets] )、 echosBulletsをfalseに設定しても他の動作は削除されないため、これを使用して「パスワードオフ」を実装することはお勧めできません。 NSSecureTextField (コピーできないなど)。

@rmarinhoMacOS用のこの問題の実装を追加しました。

このページは役に立ちましたか?
0 / 5 - 0 評価