私はViewControllerを持っていますが、それはGoogleマップに役立つため、レイアウトはすべてプログラムで行われます。
ボタン、レイヤー、その他のビューをサブビューとしてマップに配置していますが、すべてうまく機能します。
目標は、ボタンをクリックして UITextField をサブビューとして追加することです。ユーザーがクリックしたときにのみ、becomeFirstResponder に設定することでキャリッジとキーボードが表示されます。
現在の状態 UITextField が表示されますが、編集モードに入っていません。tapGesture を追加しようとしましたが、どちらも機能しませんでした
これは、UITextField を追加するためのコードです。
- (IBAction) searchBtn_Click:(id)sender
{
[self.view addSubview:self.searchTextField];
}
-(UITextField*) searchTextField
{
if(_searchTextField == nil)
{
//set the location where to place the textField as well as its size.
CGFloat yAxis = self.yAxis - TEXT_FIELD_HEIGHT - TEXT_FIELD_PADDING_Y;
CGFloat textFieldWidth = (ROUND_BUTTON_SIZE + ROUND_BUTTON_PADDING_X)*(NUMBER_OF_MENU_BTN-2) +ROUND_BUTTON_SIZE;
//set all parameters to give it a interface builder look & feel
_searchTextField = [[UITextField alloc] initWithFrame:CGRectMake(self.screenMarginXAxis+5, yAxis, textFieldWidth, TEXT_FIELD_HEIGHT)];
_searchTextField.borderStyle = UITextBorderStyleRoundedRect;
_searchTextField.font = [UIFont systemFontOfSize:15];
_searchTextField.placeholder = @"enter address or location";
_searchTextField.autocorrectionType = UITextAutocorrectionTypeNo;
_searchTextField.keyboardType = UIKeyboardTypeDefault;
_searchTextField.returnKeyType = UIReturnKeyDone;
_searchTextField.clearButtonMode = UITextFieldViewModeWhileEditing;
_searchTextField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
_searchTextField.delegate = self;
}
return _searchTextField;
}
searchBtn_Click:
これは、メソッドにサブビューを追加した後に追加された、tapGesture で試したコードです。
//set the tap gesture to identify when the user enters edit mode
tapSearchTextField = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(enterSearchEditMode)];
[tapSearchTextField setNumberOfTouchesRequired:1];
[tapSearchTextField setNumberOfTapsRequired:1];
[tapSearchTextField setDelegate:self];
[self.searchTextField addGestureRecognizer:tapSearchTextField];
-(void) enterSearchEditMode
{
[self.searchTextField becomeFirstResponder];
}