限制数字文本字段中字符串的复制粘贴

时间:2011-02-10 21:28:06

标签: iphone cocoa ios uitextfield

我有一个文本框,我希望用户只输入数字。我在那里实现了数字键盘。但是,如果有人将我的应用程序放在后台并从其他应用程序复制一些字符串并返回到我的应用程序并粘贴它,它会成功地将字符串内容粘贴到我的数字文本字段中。我该如何限制这种情况?

2 个答案:

答案 0 :(得分:7)

@theChrisKent很接近,但有一个更好的方法。使用委托方法-textView:shouldChangeTextInRange:replacementText:。检查replacementText是否包含任何非数字,如果是,则返回NO

答案 1 :(得分:0)

您可以按照以下问题的最佳答案完全禁用粘贴:How disable Copy, Cut, Select, Select All in UITextView

只是继承UITextView并覆盖此方法(从上面的问题中窃取的代码)

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
    if (action == @selector(paste:)
        return NO;
    return [super canPerformAction:action withSender:sender];
}

否则,您可以实现UITextViewDelegate协议并实现textViewDidChange:方法并检查它是否为数字。如果没有,请撤消更改。这里的文档:http://developer.apple.com/library/ios/documentation/uikit/reference/UITextViewDelegate_Protocol/Reference/UITextViewDelegate.html#//apple_ref/occ/intfm/UITextViewDelegate/textViewDidChange