2010-08-04 89 views
6

我正在尋找一個非hackish解決方案,因此基本上-inputView。我不確定的部分是如何使它看起來像常規鍵盤,從背景到鍵。我意識到,我可以使用蘋果電腦的photoshop,但是這看起來似乎有些ha,,特別是如果蘋果(可能不是但仍然有可能)決定改變鍵盤的外觀。我知道Numbers在製作看起來像標準系統的鍵盤方面做得非常出色,我想這樣做(儘管顯然他們可以訪問使系統鍵盤相同的資源,包括可能的私有框架,等等)自定義iPad鍵盤,看起來像系統鍵盤

回答

0

創建視圖控制器和xib。 xib應該有1-9,0和刪除按鈕映射到您的控制器中的IBOutlets。將返回值字符串存儲並保留爲屬性。如果您願意,您可以添加小數等。在標題中,存儲帶有屬性的版本塊閉包(或者創建委託或使用通知)。

@property (copy) void(^valueChangedBlock)(NSString* string); 

在觸摸起來,每個按鈕將事件發送到這樣的方法:

- (IBAction) pressKey:(id)sender 
{ 
    NSString *toAppend; 

    // Instead of this switch you can store the values in a dictionary mapped by sender. 
    switch(sender) 
    { 
     case oneButton: [email protected]"1"; break; 
     case twoButton: [email protected]"2"; break; 
     ... 
    } 

    returnValue = [returnValue appendString:toAppend]; 
    valueChanged(returnValue); 
} 

顯然刪除鍵應該從字符串的末尾,而不是追加刪除一個字符。除了創建控制器並將此視圖添加爲inputView之外,您應該添加valueChangedBlock並將其設置爲更新文本字段。您可能希望在文本字段集上放置一個清晰的自定義按鈕,以使字段第一響應者不會出現,就好像用戶可以在字符串中的任何位置進行編輯一樣。

+0

喜彼得,在我的情況下,上面的代碼給出了類似的錯誤:指針不允許爲案例值。哪裏不對?我該怎麼辦?請幫忙 – 2010-11-09 08:16:26

+0

我寫了那個代碼作爲例子,但需要一些修改。嘗試使用if-else語句來檢查發件人的身份,或者甚至更好的是,在控制器初始化期間爲pressKey方法中的單行查找,將按鈕及其結果值存儲在字典中。 – 2010-11-09 13:41:55

2

我使用了以下內容:

tenDigitKeyboard.m

-(IBAction)pressedKey:(UIButton *)sender 
{ 
    [delegate pressedKey:sender.tag]; 
} 

其中代表被定義爲`ID代表;

然後在委託我做...

-(void)pressedKey:(NSInteger)key 
{ 
    NSString * bufferString = model.string; 
    if (key == -1) {//delete 
     model.string = [bufferString substringWithRange:NSMakeRange(0, [bufferString length]-1)]; 
    }else{ 
    //will need to change the following to lookup key value based on a lookup of the button.tag 
     model.string = [bufferString stringByAppendingFormat:@"%i",key]; 
    } 
    [self update];//updates the view 
} 

我從鍵盤按鍵藝術品:http://www.teehanlax.com/blog/iphone-gui-psd-v4/