2012-03-28 58 views
2

我已經創建了一個子類UIViewController,並且xib有我建立的自定義鍵盤。我使用自定義鍵盤的原因是我需要一個十進制的鍵,它需要比本地鍵盤更短,並且它只需要數字。使用自定義鍵盤爲兩個不同的意見

模態視圖不起作用,因爲我希望它只能在中途出現,就像本地鍵盤一樣。

我能做到這一點在同一個xib另一種觀點,但我不知道如何將它從一個單獨的xib 2個不同的觀點稱會用我的鍵盤 - 所以我想只能創建一次,而不是將它作爲另一個視圖添加到xib中。

下面是代碼的外觀,當我只是將另一個視圖添加到相同的xib。 (有用)。

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { 
    if (!calcVisible) { 
     [calculatorView setFrame:CGRectMake(0, 416, 320, 200)]; 
     [self.view addSubview:calculatorView]; 

     [UIView beginAnimations:nil context:NULL]; 
     [UIView setAnimationDuration:0.3f]; 
     [calculatorView setFrame:CGRectMake(0, 216, 320, 200)]; 
     [UIView commitAnimations]; 

     calcVisible = YES; 
    } 

但我怎麼會初始化calculatorView從單獨xib

回答

1

模式視圖不工作,因爲我希望它只是拿出約 一半,像原生鍵盤。

將您的文本字段的inputView屬性設置爲您要用作鍵盤的視圖。在這種情況下,我想這是calculatorView,所以地方在您的視圖控制器的-viewDidLoad你要添加:

textField.intputView = calculatorView; 

的文本字段,然後將顯示視圖,而不是隻要它成爲第一個響應的標準鍵盤。您不必擔心自己呈現視圖。

但我怎麼會從一個單獨的xib初始化calculatorView?

這也很簡單。出口添加到您的視圖控制器如果您尚未:(你會自然地希望與@synthesize創建存取,可能)

@property(strong, nonatomic) IBOutlet UIView* calculatorView; 

創建一個名爲「Calculator.xib」的.xib包含該視圖你想用。在.xib中選擇File's Owner代理圖標,並將其類設置爲您的視圖控制器的類。然後將.xib中的視圖連接到文件所有者的calculatorView插座。在您的視圖控制器的代碼,加載的.xib文件:

[[NSBundle mainBundle] loadNibNamed:@"Calculator" owner:self options:0]; 

之後,你calculatorView屬性應指向您的視圖的一個實例。

+0

感謝您的幫助迦勒,我只是有點困惑。我是否將計算器視圖和xib連接到正在使用它的viewController或calculatorView.h?因爲我需要從兩個不同的視圖使用它 - 所以如果我從一個視圖連接它,我不能從另一個視圖使用它? – inorganik 2012-03-28 16:29:08