在 xamarin.mac 中只允许 NsTextField 输入的数字

Moh*_*bid 3 xamarin xamarin.mac

我想放置一个只接受数字(0-9)的文本字段。如何限制 NSTextfield 只允许数字/整数?

Sus*_*ver 6

创建一个NSNumberFormatter子类,并审查partialString在接收到IsPartialStringValid的字符,你愿意接受或拒绝。更改newString以删除您不接受的字符。

NSNumberFormatter 子类:

class NumberOnlyFormattter : NSNumberFormatter
{
    public override bool IsPartialStringValid(string partialString, out string newString, out NSString error)
    {
        newString = partialString;
        error = new NSString("");
        if (partialString.Length == 0)
            return true;

        // you could allow use partialString.All(c => c >= '0' && c <= '9') if internationalization is not a concern
        if (partialString.All(char.IsDigit))
            return true;
        newString = new string(partialString.Where(char.IsDigit).ToArray());
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

例子:

var text = new NSTextField(new CGRect(50, 50, 100, 40));
text.Formatter = new NumberOnlyFormattter();
View.AddSubview(text);
Run Code Online (Sandbox Code Playgroud)

回复:https : //developer.apple.com/reference/foundation/numberformatter