2016-11-30 54 views
0

我有3个文本字段。当用户在每个文本字段中输入文本时,我想使用UITextFieldDidEndNotification来捕获它的文本并将其分配给一个字符串。UITextField通知

[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(textFieldName:) name:UITextFieldTextDidEndEditingNotification object:nil]; 

-(void)textFieldName:(UITextField*)sender 
{ 
    if(sender==firstNameText) 
    { 
     firstName=textField1.text; 
    } 
    if(sender==middleNameText) 
    { 
     middleName=textField2.text; 
    } 
    if(sender==lastNameText) 
    { 
     lastName=textField3.text; 
    }  
} 

但它没有传递到if条件。怎么做?

+0

宁可这样,使用textfield的委托方法,如** textfieledendediting ** – Wolverine

+0

您的代码不起作用的原因是因为传递给您的'textFieldName:'方法的参数是'NSNotification'的实例,而不是'UITextField'。 – rmaddy

+0

仅供参考 - 请查看“if/else”语句。 – rmaddy

回答

0

然后使用NotificationObserver,使用委托方法。

确保您已设置所有文本字段的委托。而且每当你开始写下面的方法都可以调用并且可以执行操作。

通过考虑textfield1.tag = 0,textfield2.tag = 1等

- (BOOL)textField: (UITextField *) textField 
    shouldChangeCharactersInRange: (NSRange) range  
    replacementString: (NSString *) string 
{ 
    switch (textField.tag) 
    { 
    case 0: 
     //Code for textField1 
     break; 
    case 1: 
     //Code for textField2 
     break; 
    case 2: 
     //Code for textField3 
     break; 
    } 
} 

另一种方法可以尝试像textFieldDidEndEditing

- (void)textFieldDidEndEditing:(UITextField *)textField{ 
    if (textField == textField1) { 
     //Code for textField1 
    } else if (textField == textField2) { 
     //Code for textField2 
    } 
} 
+0

这不是一个有效的'switch'语句。在Objective-C中,'switch'中的值必须是整数类型。 – rmaddy

+0

谢谢@rmaddy。我会纠正它。 – Wolverine

1

您可以使用此或改变同样在您的代码

[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(textFieldName:) name:UITextFieldTextDidEndEditingNotification object:nil];// you need to pass your nil object here 

-(void)textFieldName:(NSNotification *)notification 
{ 
    UITextField *sender = [notification object]; // here you get your textfield 
} 
+0

@Smartguy这是我在问题下面的第一条评论意思。 – rmaddy

+0

@rmaddy是的,你是对的,但这个答案我解决了在Xcode现在,然后张贴这个答案。 – KKRocks

1

这可以实现th粗略的UITextField的委托功能。

你必须使用UItextFieldDelegate方法类似

@interface YouClass : UIViewController<UITextFieldDelegate> 

分配委托给你的文本框,

_YourTextField.delegate = self; 

然后,你必须实现委托函数接收的UITextField

结束编辑事件
-(void)textFieldDidEndEditing:(UITextField *)textField{ 

    NSLog(@"%@",textField.text); 
    //You may perform your operation like 

    if(textField ==firstNameText){ 
     firstName=textField1.text; 
    } 
    else if(textField ==middleNameText){ 
     middleName=textField2.text; 
    } 
    else if(textField ==lastNameText){ 
     lastName=textField3.text; 
    } 
}