我正在我的应用程序中实现自定义键盘。我希望键盘适用于文本字段的多种“类型”(所有数字,但有些可以有负值与严格正数,一些整数与一些十进制值)。我想根据 textField 的“类型”隐藏一两个按钮来实现这一点。
我已经构建了键盘,并且可以将其分配为我的 textFields (xValue) 之一的 inputView。我还在键盘的 ViewController 中编写了一个方法,该方法将整数作为输入并应该修改键盘按钮。目前,此方法在我的 ViewController 的 viewDidLoad 方法中有效,但我想从初始化键盘的 ViewController 类中调用它。当我尝试调用它时,隐藏的属性没有改变。
在包含我的文本字段的 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
}