0

私は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];
}
4

1 に答える 1

0

[self.searchTextField]ジェスチャ認識機能を追加しようとすると、「 」が NULLになるような気がします。そこにブレークポイントを設定したり、出力を NSLog したりすると、これが証明されます。

searchTextFieldビュー コントローラの外側の" " プロパティを参照していますか?

@propertyそうでない場合は、" " ビットを取り除き、ivar " _searchTextField" の使用に固執します (たとえば、" " のような行を " [self.searchTextField addGestureRecognizer:tapSearchTextField];" に変更し[_searchTextField addGestureRecognizer: tapeSearchTextField];ます。

于 2013-07-26T04:42:18.223 に答える