xamarin 如何禁用iOS 17自动填充弹出窗口?

luaexgnf  于 2023-11-15  发布在  iOS
关注(0)|答案(1)|浏览(157)

你好,亲爱的StackOverflow用户,
我在我的Xamarin.iOS应用程序中遇到了一个恼人的问题。简单地说,从iOS 17开始,我的许多扩展字段现在都为我提供了自动填充功能。当我点击自动填充按钮时,iOS会让我填写联系人详细信息或密码。
请不要将此与iOS键盘上可用的自动填充功能混淆。键盘端的一切都很好。
这里有一个屏幕截图来显示问题中的自动填充功能:


的数据
我尝试通过CanPerform()选择器禁用弹出窗口,但iOS似乎没有将AutoFill功能传递给CanPerform()
下面是CanPerform()的代码:

public bool EvaluateEditSelector(string selector) //gets called by CanPerformAction()
{
    if (AllowCopyPaste || CopyPasteOverride)
    {
        switch (selector)
        {
            case "cut:":
                return showCopyPaste;
            case "copy:":
                return showCopyPaste;
            case "select:":
                return showCopyPaste;
            case "selectAll:":
                return showCopyPaste;
            case "paste:":
                return showCopyPaste;
            case "makeTextWritingDirectionLeftToRight:": //Last selector
                showCopyPaste = true;
                return false;
            default:
                return false;
        }
    }
    else
    {
        return false;
    }
}

字符串
我检查了UIMenuBuilder或UIMenuIdentifiers是否有自动填充的标识符,但我没有找到相应的标识符。
下面是BuildMenu()中的代码:

public override void BuildMenu(IUIMenuBuilder builder)
{
    if (Device.GetSystemVersion().Major >= 16) //helper method to check system version
    {
        builder.RemoveMenu(UIMenuIdentifierExtensions.GetConstant(UIMenuIdentifier.Lookup));
    }
    base.BuildMenu(builder);
}


提前感谢您的关注。

qvsjd97n

qvsjd97n1#

试试这个:

@available(iOS 13.0, *)
override func buildMenu(with builder: UIMenuBuilder) {
    if #available(iOS 17.0, *) {
        builder.remove(menu: .autoFill)
    }
    super.buildMenu(with: builder)
}

字符串

相关问题