레이블에 숫자를 입력하는 키패드 인터페이스를 만들려고합니다. 입력 한 4 자리 핀을 입력하는 키패드의 선을 따라 생각하면 잠금 장치가있는 iOS 기기를 켤 때와 마찬가지로 생각하는 것이 더 쉽습니다.특정 레이블을 참조하는 방법
나는 한 번 타이핑 된 숫자를 보여줄 네 개의 레이블을 가지고 있습니다. 12 개의 버튼에 숫자가 포함되어 있습니다 (취소 버튼과 삭제 버튼). 각 단추에는 태그가 지정되어 있습니다. 버튼을 클릭하면 다음 빈 라벨의 텍스트로 태그를 입력하겠습니다.
내가해야 할 일은 setPin 함수에서 다음 빈 라벨을 참조하는 것입니다. 나는 잘못된 방향으로 가고 있는가? 아니면 실종 된 것일까? 아래 코드는 내린 버전입니다.
- (void)viewDidLoad
{
[super viewDidLoad];
[[self view] setBackgroundColor:[UIColor whiteColor]];
[self setCurrField:1];
// BUILD A VIEW TO CONTAIN THE LOGIN PANEL
UIView *pinView = [[UIView alloc] initWithFrame:CGRectMake(10, 10, 400, 500)];
pinView.backgroundColor = [UIColor lightGrayColor];
// CREATE BUTTONS
int nPos = 1;
int leftPos;
int topPos = 134;
while (nPos <= 12)
{
leftPos = (nPos%3 == 1) ? 19 : leftPos + 113 + 12;
topPos = (nPos%3 == 1) ? topPos + 61 + 10 : topPos;
// BUILD THE BUTTONS AND ADD TO THE PAGE
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
[btn setTag:nPos];
[btn addTarget:self action:@selector(setPin:) forControlEvents:UIControlEventTouchUpInside];
[btn setFrame:CGRectMake(leftPos, topPos, 113, 61)];
[btn setBackgroundColor: [UIColor darkGrayColor]];
NSString *btnLabel;
if(nPos <= 9)
{
btnLabel = [NSString stringWithFormat:@"%i", nPos];
}
else
{
switch (nPos) {
case 10:
btnLabel = @"Cancel";
break;
case 11:
btnLabel = @"0";
break;
case 12:
btnLabel = @"Delete";
break;
default:
break;
}
}
[btn setTitle: btnLabel forState:UIControlStateNormal];
[pinView addSubview:btn];
nPos++;
}
// CREATE THE TEXTBOXES
UILabel *char1Label = [[UILabel alloc] initWithFrame:CGRectMake(19, 65, 83, 91)];
UILabel *char2Label = [[UILabel alloc] initWithFrame:CGRectMake(113, 65, 83, 91)];
UILabel *char3Label = [[UILabel alloc] initWithFrame:CGRectMake(207, 65, 83, 91)];
UILabel *char4Label = [[UILabel alloc] initWithFrame:CGRectMake(301, 65, 83, 91)];
[pinView addSubview:char1Label];
[pinView addSubview:char2Label];
[pinView addSubview:char3Label];
[pinView addSubview:char4Label];
[[self view] addSubview:pinView];
}
-(void)setPin:(UIButton *)sender
{
if(sender.tag <= 9 || sender.tag == 11)
{
[--charLabel[self currField]Label-- setText:[sender tag]];
[self currField++];
}
elseif(sender.tag == 12)
{
[self currField--];
[--charLabel[self currField]Label-- setText:@""];
}
}
을 나는 항상 감동 얼마나 빨리이 포럼에서 질문에 대한 답변을 얻을 수 있습니다. 도와 줘서 고마워. 배열에 레이블을 넣는 개념이 나에게 가장 이해하기 쉽기 때문에 생각해 봅니다. – Typhoon101