2012-01-19 29 views
1

我想要的UITextField以正確格式的輸入的數目作爲一個時間,使用「shouldChangeCharactersInRange」每次按一個新的電話號碼時,獲得這樣的結果添加分鐘:格式化的UITextField作爲時間爲hh:mm

i.e.: 
00:00 
00:08 = 8 pressed 
01:23 = 8 -> 3 pressed 
08:30 = 8 -> 3 -> 0 pressed 

UITextField是自定義UITableViewCell的子視圖。 我不明白,在此先感謝。

回答

0

簡單

在H聲明:

@interface ViewController : UIViewController 
{ 
    int hh; 
    int mm; 
    int ss; 
} 


@property (strong, nonatomic) IBOutlet UILabel *outputLabel; 

@end 

在M

-(void)generateText 
{ 
    NSString *hhString; 
    NSString *mmString; 
    NSString *ssString; 

    if (hh < 10){ 
     hhString = [NSString stringWithFormat:@"0%d",hh]; 
    } else { 
     hhString = [NSString stringWithFormat:@"%d",hh]; 
    } 
    // 
    if (mm < 10){ 
     mmString = [NSString stringWithFormat:@"0%d",mm]; 
    } else { 
     mmString = [NSString stringWithFormat:@"%d",mm]; 
    } 
    if (ss < 10){ 
     ssString = [NSString stringWithFormat:@"0%d",ss]; 
    } else { 
     ssString = [NSString stringWithFormat:@"%d",ss]; 
    } 





    NSString *outputText = [NSString stringWithFormat:@"%@:%@:%@",hhString,mmString,ssString]; 
    NSLog(@"output string = %@",outputText); 
    outputLabel.text = outputText; 

} 


-(IBAction)addHH:(id)sender 
{ 
    hh = hh +1; 
    [self generateText]; 
} 

-(IBAction)addMM:(id)sender 
{ 
    mm = mm +1; 
    [self generateText]; 
} 

-(IBAction)addSS:(id)sender 
{ 
    ss = ss +1; 
    [self generateText]; 
} 

在界面生成器使用3個按鈕以激活適當的IBActions

+0

謝謝,但我用NumberKeypad使用UIKeyboard,我想添加分鐘,而我鍵入數字。 – Filippo

+0

所以更改墊以生成號碼反對+1 - 也就是說,當你按8,它會做hh = 8在IBAction – chewy

0

http://developer.apple.com/library/ios/#documentation/uikit/reference/UITextFieldDelegate_Protocol/UITextFieldDelegate/UITextFieldDelegate.html

使用該委託方法來更改文本字段相應

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
    // You should already have set some string in the text field 
    if (/*user input is between 0-9*/) { 
     NSString *text = /* Format your text */ 
     textFiled.text = text; 
     // Return NO to disable editing done by the user 
     // Not required to return here if you always return NO; 
     return NO; 
    } 
    // Return NO if you do not want to let user make any changes, otherwise YES 
    return YES; 
} 

我已經測試過它,但改變這個方法裏面的textField.text遞歸調用這個和失敗。如果是這種情況,請使用標記來跟蹤您和用戶做了哪些更改。如果標誌爲ON,則返回YES,否則返回NO

+0

我正在使用這種方法,我想獲得這個結果,每次一個新的號碼被按下:00:00 00:08 = 8被按下 01:23 = 8 - > 3被按下 08:30 = 8 - > 3 - > 0被按下 – Filippo

相關問題