使用代码和字段上的数字限制来删除编号手册



我有一个文本字段,其中键盘类型为号码。

我曾经有这种方法,该方法与视图上任何地方的触摸连接在一起。连接是在XIB文件中进行的。它毫无问题地工作。

-(IBAction)closeKeypad:(id)sender
{

[textField1 resignFirstResponder];
[textField2 resignFirstResponder];
}

我需要对用户可以输入的值限制(最大为100)。

我结束了以下内容。

- (void)textFieldDidEndEditing:(UITextField *)textField {
    //if value is greater than 100, display error message//
    int integer = [textField.text intValue]; //convert value into integer//


    if (integer > 100) {
    UIAlertView *tooHigh = [[UIAlertView alloc] initWithTitle:@"Invalid" message:@"Number    cannot be over 100" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];

    [tooHigh show];
}

现在我需要2件事

1)如果用户输入100上的图,则清除文本字段,并且键盘停留在该文本字段中。

2)一种触摸背景时摆脱键盘的方法。我猜我需要基于代码的解决方案?

有了以前的实现,我可以输入200,然后我会收到错误,但是键盘将关闭,并且在文本字段中有200个。

谢谢!

您需要一个数字格式化,首先将其分配并设置其主要属性:

@property (nonatomic,strong) NSNUmberFormatter* formatter;

在实施中:

self.formatter=[NSNUmberFormatter new];
formatter.numberStyle= NSNumberFormatterDecimalStyle;
formatter.maximum= @100;

然后:

- (void)textFieldDidEndEditing:(UITextField *)textField 
{
    NSNumber* value;
    BOOL correct=[formatter getObjectValue: &value forString: self.textField.text errorDescription: nil];
    if(!correct)
    {
        self.textField.text= @""; // clear text
    }
}

至于第二部分,在视图控制器中启用用户交互:

self.view.userInteractionEnabled= YES;

然后实现此方法:

- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;

,只有触摸无法成为第一响应者的视图,您才会收到通知,因此请辞职文本字段的第一响应者:

if(textField.isFirstResponder)
    [textField resignFirstResponder];

就删除软键盘而言,您可以从视图的视图控制器类中将以下消息发送到您的视图,并且它将删除键盘:

[self.view endEditing:YES];

当用户触摸背景时,将其触发的一种方法是将TAP事件添加到视图中,然后将上述消息放入Tap手势事件处理程序中。

最新更新