2012-01-31 126 views
1

我已经在键盘上为上一个/下一个/完成按钮选择的文本框创建了一个栏。这样做时,我注意到我用于在文本字段之间导航的标签发生了一个奇怪的事件。我正在用循环编程创建我的接口,因此,只需将标记值设置为循环变量i即可。标签标签0的奇怪问题?

我在0开始i变量,所以创建的第一个文本字段的标签为零。基本上所发生的是'previous'按钮的功能只会低到1.它甚至不会回到带有0标签的文本字段。解决此问题的唯一方法是将所有标记值增加1,以便第一个文本字段从1开始而不是零。

这是我的代码。我的代码中有一个错误,我看不到?或者这是一个奇怪的问题与标签?

-(void)gotoPrevTextfield{ 
// If the active textfield is the first one, can't go to any previous 
// field so just return. 
UITextField *textField = (UITextField *)[inputsView viewWithTag:0]; 
NSLog(@"%i",textField.tag); 
NSLog(@"%i",txtActiveField.tag); 
if (txtActiveField == textField) { 
    NSLog(@"returning at previous"); 
    return; 
} 
else { 
    NSLog(@"set responder"); 
    // Otherwise if a different textfield has the focus, the operation 
    // of "previous" button can be done and set the previous as the first 
    // responder. 
    textField = (UITextField *)[inputsView viewWithTag:txtActiveField.tag - 1]; 
    NSLog(@"%i",textField.tag); 
    NSLog(@"%i",txtActiveField.tag); 
    [textField becomeFirstResponder]; 
} 

} 

回答

2

注意,未设置标签默认为0,这样几乎是一个糟糕的选择。你可能会得到另一种你并不期待的观点。

一个相当不错的做法是添加一些常量,如100,考虑使常量为const int或#define以使清晰。

+0

Aaah。这可能正是发生了什么事。 – 2012-01-31 19:52:34

+2

'enum'适用于建立名称以表示一组接口项目的标签。 @Jesse – 2012-01-31 20:10:48

+0

@Josh Yep,特别是如果有几种类型的标签。 – zaph 2012-01-31 20:15:40