UITextViewなどでキーボードを閉じたい時に、キーボードの上部に閉じるボタンを追加して閉じる方法。
inputAccessoryViewといって、キーボード上部にボタンなどを配置できる。
キーボードの表示/非表示に合わせて、表示/非表示される。
生成
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| - (void)viewDidLoad
{
...
// ボタンを配置するUIViewを作成(幅320/高さ44・背景色:透明)
UIView* accessoryView =[[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
accessoryView.backgroundColor = [UIColor clearColor];
// ボタンを作成(accessoryView内で、X:270 Y:5 Width:40 Height:30にイメージ有りボタン)
UIButton* closeButton = [UIButton buttonWithType:UIButtonTypeCustom];
[closeButton setImage:[UIImage imageNamed:@"hideKeyboard"] forState:UIControlStateNormal];
closeButton.contentMode = UIViewContentModeScaleAspectFit;
closeButton.frame = CGRectMake(270, 5, 40, 30);
// ボタンタップ時のメソッドを指定(closeKeyboard: → 自作メソッド)
[closeButton addTarget:self action:@selector(closeKeyboard:) forControlEvents:UIControlEventTouchUpInside];
// ボタンをViewに追加
[accessoryView addSubview:closeButton];
// ビューをUITextFieldのinputAccessoryViewに設定
_textView.inputAccessoryView = accessoryView;
...
}
|
ボタンタップ時の処理
Closeボタン実行時の処理も記述する。
1
2
3
4
| -(void)closeKeyboard:(id)sender
{
[self.view endEditing:YES];
}
|
関連
UITextView関連では、以下もあり。
http://mzgk.github.io/blog/2014/uiscrollview-tapevent/