私はUITableFieldを含むいくつかのカスタムUITableViewCellを保持するUITableViewを実装しています。UITextField(UITableViewCellサブクラス内の)の2番目のタップが予期せずキーボードを閉じます
いくつかのイベントでキーボードが消えてしまいがちな大抵の人とは違って、私はいつもそれを表示したいと思っています。 問題は、UITextFieldの最初のタップが問題なく表示されるようにすることです。しかし、もう一度タップすると、現在表示されているキーボードは消えます。
さらに、別の関連する問題は、UITextField内のカーソルの位置を変更できないことです。 カーソルの現在の位置を変更するためにUITextFieldでタップを保持すると、虫眼鏡が期待どおりにポップアップします。しかし、いったんタップしてしまえば、キーボードはすぐに閉じます。
この問題を解決するにはどうすればよいですか?
- (void)viewDidLoad
{
...
TagDetailCell *cell1 = [[[NSBundle mainBundle] loadNibNamed:@"TagDetailCellView" owner:self options:nil] lastObject];
TagDetailCell *cell2 = [[[NSBundle mainBundle] loadNibNamed:@"TagDetailCellView" owner:self options:nil] lastObject];
TagDetailCell *cell3 = [[[NSBundle mainBundle] loadNibNamed:@"TagDetailCellView" owner:self options:nil] lastObject];
self.cells=[NSArray arrayWithObjects:cell1, cell2, cell3, nil];
...
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell=[self.cells objectAtIndex:indexPath.row];
cell.selectionStyle=UITableViewCellSelectionStyleNone;
switch (indexPath.row) {
...
((TagDetailCell*)cell).fieldLabel.text= ...;
((TagDetailCell*)cell).fieldValue.clearButtonMode=UITextFieldViewModeWhileEditing;
((TagDetailCell*)cell).fieldValue.text=...;
[((TagDetailCell*)cell).fieldValue addTarget:self action:@selector(textFieldChanged:) forControlEvents:UIControlEventEditingChanged];
...
}
return cell;
}
私はUITextFieldの代理人を実装しませんでした。したほうがいい?
ありがとうございました。私は以前これを知らなかった。しかし、キーボードは 'disablesAutomaticKeyboardDismissal'で' YES'を返しても消えてしまいます。プレゼンテーションスタイルを 'UIModalPresentationFormSheet'に設定することも役に立ちません。 –
'disablesAutomaticKeyboardDismissal'が正しく呼び出されていることを確認しようとしましたが、この関数はまったく呼び出されません。何か案が? –
'UITextField'のデリゲートをビューコントローラに設定してみてください。 – Gobot