2011-11-30 101 views
0

如何去模仿iPhone手機的鍵盤輸入。所以,當你點擊一個1顯示,然後2,然後它是12 ...等等,以及() - 。我不想使用實際的手機應用程序,因爲我正在創建一個虛假的撥號程序,但我希望它看起來像功能類似實際的東西。模仿iPhone手機的鍵盤輸入

任何想法將不勝感激謝謝。

編輯:

好了,所以我把所有需要的按鈕,但我最終把他們都單獨的按鈕。所有鏈接包括標籤,這是一個按鈕和更新程序的樣子。

-(IBAction)zeroButton:(id)sender{ 
self.enteredPhoneNumberString = [self.enteredPhoneNumberString stringByAppendingString:[NSString stringWithFormat:@"%d", "0"]]; 
[self updateFormattedPhoneNumberLabel]; 

} 

-(void)updateFormattedPhoneNumberLabel { 
    if ([self.self.enteredPhoneNumberString length] > 3) { 
     NSString *firstThree = [self.enteredPhoneNumberString substringToIndex:2]; 
     NSString *lastSet = [self.enteredPhoneNumberString substringFromIndex:2]; 
     self.label.text = [NSString stringWithFormat:@"%@-%@", firstThree, lastSet]; 
    } 
    else if ([self.self.enteredPhoneNumberString length] > 7) { 
     NSString *firstThree = [self.enteredPhoneNumberString substringToIndex:2]; 
     NSString *secondThree = [self.enteredPhoneNumberString substringToIndex:2]; 
     NSString *lastSet = [self.enteredPhoneNumberString substringFromIndex:2]; 
     self.label.text = [NSString stringWithFormat:@"(%@) %@-%@", firstThree, secondThree, lastSet]; 
    } 
} 

我也試過用「」不要附在數字後面。任何想法爲什麼沒有顯示?

NEW編輯:

我加入enteredPhoneNumberString = @ 「」;並以數字格式顯示您原來顯示數字的方式。我現在面臨的主要問題是獲取它,以便()和 - 在正確的位置彈出。

+0

編輯我的迴應,也許幫助您格式化顯示。 –

回答

4

我會建議創建一個模擬數字鍵盤的網格UIButton,這些按鈕都會調用諸如keyPadButtonTouchedUpInside:(id)sender這樣的方法,並且有一個與它所代表的數字相對應的標記。

keyPadButtonTouchedUpInside:(id)sender實現可能像...

- (void)keyPadButtonTouchedUpInside:(id)sender { 
    UIButton *touchedButton = (UIButton *)sender; 
    if (touchedButton.tag <= 9) { 
     self.enteredPhoneNumberString = [self.enteredPhoneNumberString stringByAppendingString:[NSString stringWithFormat:@"%d", touchedButton.tag]]; 
     [self updateFormattedPhoneNumberLabel]; 
    } else { 
     // maybe some other code for pounds/stars entered on the keypad if you have these 
     // you will also be checking if the user hit the backspace key and trim your 
     // phone number string by 1 
    } 
} 

現在您需要實現updateFormattedPhoneNumberLabel

這將看看情況的NSString變量self.enteredPhoneNumberString和更新你在的地方顯示有一個UILabel號碼。

updateFormattedPhoneNumberLabel可能看起來像......

- (void)updateFormattedPhoneNumberLabel { 
    if ([self.self.enteredPhoneNumberString length] > 3) { 
     NSString *firstThree = [self.enteredPhoneNumberString subStringToIndex:2]; 
     NSString *lastSet = [self.enteredPhoneNumberString subStringFromIndex:2]; 
     self.formattedPhoneNumberLabel.text = [NSString stringWithFormat:@"%@-%@", firstThree, lastSet]; 
    } else if .... 
     // more conditions to check for other lengths of the 
     // entered number and continue with the proposed formatting methods. 

希望得到您沿着小路,有可能是這樣做的,但實際上它不是一個密集的操作,所以我不會擔心到更有效的方法關於優化很多,除非你看到我不期望的某種進入滯後。

編輯

,這樣的格式在以下行爲發生了,我可能會更新格式化條件。

1-3數字輸入顯示爲 「1」, 「12」,或 「123」

4-7數字輸入顯示爲 「123-4」, 「123-45」,「123-456 」或 「(123)456-78 」 「(123)456-789」 或 「(123)456-7890」

123-4567「 輸入顯示爲

8-10號」輸入的11個數字顯示爲「1+(234)-567-8901」

超過11的任何數字我只會顯示一串數字,除非您想進入格式化非美國數字。你還應該在電話應用程序中輸入數字,以查看它是如何響應,如果你想完全模仿它。

+0

謝謝,我會試試聽起來不錯。 – steven

+0

'stringByAppendingFormat:'可能有點整潔,但無論如何都是+1。 – Tommy

+0

@Chris Wagner所以我添加了它(我放置了上面所做的)我不確定爲什麼當點擊數字按鈕時,標籤中沒有顯示文字。任何想法爲什麼? – steven