web-dev-qa-db-ja.com

iOS 12でのオートフィルのユーザー名とパスワード

保存されたユーザー名とパスワードの候補にオートフィルをiOS 11で正常に実装しました。
ログインビューコントローラに2つのテキストフィールドがあり、1つは電子メール用、もう1つはパスワード用です。コンテンツタイプは次のように定義されます。


メール/ユーザー名のテキストフィールド設定


パスワードテキストフィールドの構成

これは以前はiOS 11で正常に機能していましたが、開発用iPadをiOS 12にアップグレードした後、アプリはユーザー名フィールドのメールを提案し、パスワードフィールドを編集すると次のようになります。


私のアカウント作成ビューコントローラーには、電子メール、パスワード、パスワードの再入力の3つのテキストフィールドがあります。コンテンツモードは次のように設定されます。

  • メール→メールアドレス
  • パスワード→新しいパスワード、ルール:minlength:8;
  • パスワードの繰り返し→新しいパスワード、ルール:minlength:8;

メールアドレスフィールドを編集するとき、それはメールアドレスを適切に提案します。ただし、パスワードとリピートパスワードのフィールドでは、新しいパスワードを提案するのではなく、保存されているパスワードを提案します。


私が試したもの

  • (非論理的に)コンテンツモードの設定を反転させて、ログインパスワードフィールドをnew passwordに設定し、アカウント作成パスワードフィールドをpassword に設定する
    • 失敗;実際、行動の変化はまったくありません
  • ログインのためにコンテンツモードをnoneに設定し、アカウントフィールドを作成して、オートフィルが自動的に処理できるようにします
    • 失敗;実際、行動の変化はまったくありません

注意

  • サーバーでオートフィルが正しく設定されています。アカウント作成フィールドで提案されている保存されたパスワードは、
  • この機能はiOS 11 iPadでも機能します
  • 新しいユーザー名でログインすると、iOS 12の場合でも、アプリはユーザーにこのユーザー名とパスワードをキーチェーンに追加するように求めます

保存されているユーザー名とパスワードの候補がiOS 12で再び機能するように、何を変更する必要があるか考えていますか?

ありがとう!



編集する

以下の@kralexからのリクエストに応じて、ストーリーボードのログインビューコントローラのビュー階層を以下に示します。

...そしてデバイス上:

9
LinusGeffarth

アップルは、オートフィルまたは新しいパスワードなど、必要と思われるものを推測するために、いくつかのヒューリスティックを行っています。ただし、場合によっては失敗することがあります。

あなたの場合、問題は「アカウント作成ボタン」に関連しています。申し込みフォームだとシステムに思わせます。

これを修正する最も簡単なオプション:サインアップUIButtonをUILabelに置き換え、タップを処理するtapRecognizerを追加します。

4
kralex

同様の問題があり、AppleのヒューリスティックがView Controllerのクラス名を利用して、新しいパスワードを提案するか、既存のパスワードを使用するかを決定していることがわかりました。 textContentTypesに正しいUITextFieldを設定しても、コントローラーの名前が使用されるようです。

私のUIViewControllerはサインアップとログインの両方を同じ画面で実行していますが、コントローラーの名前はRegistrationViewControllerです。テストのためにLoginViewControllerに変更したところ、ログイン部分が機能し始めましたが、登録ビットはログインのように機能しました。正しいtextContentTypesを設定しても!

実際にUIViewControllersを尊重するために、登録またはログインを意味しないtextContentTypeの名前を変更する必要がありました。それはひどいです。本当にひどい。

これがあなたに起こっている/起こっていた理由の少なくとも一部は、あなたがあなたの言葉を信じられないほど信じられないように、ビューコントローラの最初にWord Welcomeを持っているためだと思います。

ちなみに、私はRegistrationLoginViewController(登録設定を選択)とLoginRegistrationViewController(ログイン設定を選択)を試してみましたが、どちらも機能しませんでした。両方を同じコントローラ上に置きたい場合は、Appleのヒューリスティックを回避する必要があります。

2
Stakenborg