2011-03-15 45 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

相關問題