我在我的應用程序中實現了自定義鍵盤。我希望鍵盤適用於textField的多個「類型」(所有數字,但有些可以有負值與嚴格正值,某些整數值與某些小數值)。我想通過隱藏一個或兩個按鈕來實現這一點,具體取決於textField的「類型」。動態修改視圖
我已經構建了鍵盤,並可以將其分配爲我的textFields(xValue)之一的inputView。 我也在我的鍵盤的ViewController中寫了一個方法,該方法以整數作爲輸入,並且應該修改鍵盤按鈕。目前,這種方法在我的ViewController的viewDidLoad方法中工作,但我想從初始化鍵盤的ViewController類調用它。當我嘗試調用它時,隱藏的屬性不會改變。
在視圖控制器,它包含我的文本字段我已經把下面的viewDidLoad中:
DCKeyboard *dckvc = [[DCKeyboard alloc] initWithNibName:@"DCKeyboard" bundle:nil];
[dckvc modifyKeyboardType:0 doneNextValue:0]; // Has no effect
xValue.inputView = dckvc.view;
和DCKeyboard.m我已經定義:
@synthesize doneNextButton;
@synthesize decimalButton;
@synthesize posNegButton;
-(void) modifyKeyboardType:(int)buttonTypeNumber doneNextValue:(int)doneNextNumber {
switch (buttonTypeNumber) {
case 0: // Case 0: All buttons available
decimalButton.hidden = NO;
posNegButton.hidden = NO;
break;
case 1: // Case 1: No decimal button
decimalButton.hidden = YES;
posNegButton.hidden = NO;
break;
case 2: // Case 2: No positive/negative button
decimalButton.hidden = NO;
posNegButton.hidden = YES;
break;
case 3: // Case 3: No decimal or positive/negative button
decimalButton.hidden = YES;
posNegButton.hidden = YES;
break;
default:
break;
}
switch (doneNextNumber) {
case 0: // Case 0: Done
[doneNextButton setImage:[UIImage imageNamed:@"DoneButton.png"] forState:UIControlStateNormal];
[doneNextButton setImage:[UIImage imageNamed:@"DoneButtonDown.png"] forState:UIControlStateHighlighted];
break;
case 1: // Case 1: Next
[doneNextButton setImage:[UIImage imageNamed:@"NextButton.png"] forState:UIControlStateNormal];
[doneNextButton setImage:[UIImage imageNamed:@"NextButtonDown.png"] forState:UIControlStateHighlighted];
break;
default:
break;
}
}
當我嘗試調用此如上所述,如上所述,如果我從下面的DCKeyboard的viewDidLoad方法中調用它,那麼它就可以工作 - 所以我確信我已經正確設置了所有東西,代碼起作用。我必須錯過一個基本概念!
- (void)viewDidLoad {
[super viewDidLoad];
[self modifyKeyboardType:3 doneNextValue:1]; // This works
}
由於方法後調用該方法後調用第一個方法爲此 - 只需在初始化我的鍵盤作品後交換兩行。 – slatfats