• 締切済み

[Objective-C]キーボード表示切り替え

Objective-CでiPadアプリケーションを作成しています。 添付画像のように、 「キーボード入力」と「タグ入力」を切り替えることができるような 仕組みをつくりたいと思っています。 (添付ははてなブックマークアプリのタグ付け画面です) どのように実装方法を考えれば、この操作性が実現できるのかわからずにいます。 ソフトウェアキーボードは常時表示させておいて、 その上にタグ用のUIViewをかぶせることができるのか? (試しに実装してみるとソフトウェアキーボードの上にUIViewは被せられませんでした) もしくは、ソフトウェアキーボードを非表示にして、 その位置にタグ用UIViewを表示させるのか? (テキストエリアをタップするとキーボードが再表示されてしまう問題あり) アイディア、コードサンプルなど、 アドバイス頂ければ幸いです。 どうぞよろしくお願いいたします。

みんなの回答

  • harawo
  • ベストアンサー率58% (3742/6450)
回答No.1

サンプルコードを掲示します。これがあなたがやりたいインターフェイス、挙動に沿うものかどうかわかりません。参考、サンプルとしてお読みください。 ViewControllerのViewに、UITextView「myTextView」を貼り付け、これをタップしたときに表れるインプットビューを編集します。 ViewController.hは、変更なしなので、省略します。 ViewController.m ---------------------- #import "ViewController.h" @interface ViewController () @property (weak, nonatomic) IBOutlet UITextView *myTextView; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; NSArray *segmentedTitles = @[@"First", @"Second", @"Done"]; UISegmentedControl *segmentedControll = [[UISegmentedControl alloc] initWithItems:segmentedTitles]; [segmentedControll addTarget: self action: @selector(segmentedControllAction:) forControlEvents:UIControlEventValueChanged]; self.myTextView.inputAccessoryView = segmentedControll; } // PickerView DataSource and Delegate - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView { return 1; } - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component { return 5; } - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component { return [NSString stringWithFormat: @"Title: Number%d", row]; } // Segmented Controll Action - (void)segmentedControllAction: (UISegmentedControl *)sender { NSInteger selectedIndex = sender.selectedSegmentIndex; if (selectedIndex == 0) { self.myTextView.inputView = nil; [self.myTextView resignFirstResponder]; [self.myTextView becomeFirstResponder]; } else if (selectedIndex == 1) { UIPickerView *pickerView = [[UIPickerView alloc] initWithFrame: CGRectMake(0.0, 0.0, 320.0, 280.0)]; pickerView.dataSource = self; pickerView.delegate = self; self.myTextView.inputView = pickerView; [self.myTextView resignFirstResponder]; [self.myTextView becomeFirstResponder]; } else { sender.selectedSegmentIndex = -1; [self.myTextView resignFirstResponder]; } } @end Firstキーボードは、デフォルトのキーボード、Secondキーボードは、UIPickerViewとしています。「Done」をタップすると、キーボードがしまわれます。

関連するQ&A