2011-03-15 42 views
1

我一直在尝试实现将触发哪个UITextField的检查。 以下是我对前两个文本字段的研究结果。 这给了我两个错误,说“发送者未申报”... 我在哪里做错了? 在此先感谢 属性和综合都OK! val是按钮的一个计算器标签值(例如0,1,2,3,4,5,6,7,8,9)检查哪个UITextField将被触发(textFieldShouldBeginEditing)

//.h file 

IBOutlet UITextField *textFieldLoanAmountDisplay; 
IBOutlet UITextField *textFieldInitDepositDisplay; 


// .m file 

const NSString *textField1Code= @"1"; 
const NSString *textField2Code= @"2"; 


-(BOOL)textField1ShouldBeginEditing:(UITextField *)textFieldLoanAmountDisplay { 
    if (textFieldLoanAmountDisplay == textField1Code) 
    { 
     UIButton *buttonPressed = (UIButton *)sender; 
     int val = buttonPressed.tag; 
     if ([textFieldLoanAmountDisplay.text compare:@"0"] == 0) { 
      textFieldLoanAmountDisplay.text = [NSString stringWithFormat:@"%d", val ]; 
     } else { 
      textFieldLoanAmountDisplay.text = [NSString stringWithFormat:@"%@%d", textFieldLoanAmountDisplay.text, val ]; 
     } 
    } 
    return NO;  
} 

-(BOOL)textField2ShouldBeginEditing:(UITextField *)textFieldInitDepositDisplay { 
    if (textFieldInitDepositDisplay == textField2Code) 
    { 
     UIButton *buttonPressed = (UIButton *)sender; 
     int val = buttonPressed.tag; 
     if ([textFieldInitDepositDisplay.text compare:@"0"] == 0) { 
      textFieldInitDepositDisplay.text = [NSString stringWithFormat:@"%d", val ]; 
     } else { 
      textFieldInitDepositDisplay.text = [NSString stringWithFormat:@"%@%d", textFieldInitDepositDisplay.text, val ]; 
     } 
    } 
    return NO; 
} 
+0

请重新格式化您的代码 - http://stackoverflow.com/editing-help – hoha 2011-03-15 22:02:50

回答

0

顺应UITextFieldDelegate协议正确。 textFieldShouldBeginEditing将被两个UITextFields调用。 UITextfield依赖于委托模式,因此它期望某个方法由其委托来实现,并且该方法必须正确命名。你想要使用的是UIButtons使用的目标动作模式。

要找出哪一个被调用,可以使用传递给该方法的UITextfield参数。不要忘记设置代表。

+0

谢谢尼克它帮了很多。 – erguvani 2011-03-31 21:44:02

2

你没有真正解释你的问题是什么,但只是通过查看你的代码,你正在使用不正确的委托方法名称。您不需要单独的textFieldShouldBeginEditing:用于每个UITextField实例。

在您的视图控制器类接口文件,确保您声明您符合UITextFieldDelegate方法有:

@interface XXXXX : XXXXXX <UITextFieldDelegate> 
在您的实现

然后,使用

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField 

如果你设置你的文本框使用不同标签的实例,如上面所示,只需使用switch语句找出哪个textField正在调用该方法:

switch (textField.tag) 
{ 
    case tagValue1: 
    // Implement your logic here 
    break; 
    case tagValue2: 
    // Implement your logic here 
    break; 
    ... 
} 
+0

感谢rogit帮助了很多 – erguvani 2011-03-31 21:43:00

+0

如果您不介意,请将其标记为已解决:) – Rog 2011-03-31 23:46:18

相关问题