1

UIToolbarはプログラムで作成した を持っておりUITextFieldUIButton別のサブビューとして追加されています。以下のコードは、 を作成してUIToolbarを返すメソッドを示していますUIView

- (UIToolbar *)createToolbar
{
    //set background of toolbar
    UIImage *rawBackground = [UIImage imageNamed:@"toolbarBackground.png"];
    UIImage *toolBarBackground = [rawBackground stretchableImageWithLeftCapWidth:13 topCapHeight:22];
    createPostBar = [[UIToolbar alloc] init];
    createPostBar.frame = CGRectMake(0, 0, self.view.frame.size.width, 44);

    [createPostBar setBackgroundImage:toolBarBackground forToolbarPosition:UIToolbarPositionAny barMetrics:UIBarMetricsDefault];

    //add and syle all toolbar items
    textView = [[HPGrowingTextView alloc] initWithFrame:CGRectMake(5, 6, 270, 40)];
    textView.contentInset = UIEdgeInsetsMake(0, 5, 0, 5);

    textView.minNumberOfLines = 1;
    textView.maxNumberOfLines = 6;
    textView.returnKeyType = UIReturnKeyDefault;
    textView.font = [UIFont systemFontOfSize:15.0f];
    textView.textColor = [UIColor blackColor];
    textView.text = @"";
    textView.delegate = self;
    textView.internalTextView.scrollIndicatorInsets = UIEdgeInsetsMake(0, 0, 0, 0);
    textView.backgroundColor = [UIColor whiteColor];

    UIImage *postBtnBackground = [UIImage imageNamed:@"postButton.png"];
    UIImage *rawEntryBackground = [UIImage imageNamed:@"postFieldBackground.png"];
    UIImage *entryBackground = [rawEntryBackground stretchableImageWithLeftCapWidth:13 topCapHeight:22];

    toolbarOverlay = [[UIImageView alloc] initWithImage:entryBackground];
    toolbarOverlay.frame = CGRectMake(4, 0, 278, 44);

    UIButton *postButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [postButton addTarget:self
                   action:@selector(btnEdit:)
         forControlEvents:UIControlEventTouchDown];

    [postButton setBackgroundImage:postBtnBackground forState:UIControlStateNormal];
    postButton.frame = CGRectMake(280, 5, 35.0, 35.0);

    [createPostBar addSubview:textView];
    [createPostBar addSubview:toolbarOverlay];
    [createPostBar addSubview:postButton];

    createPostBar.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin;

    return createPostBar;
}

次に、テキスト フィールドがクリックされたときに、 をアクセサリ ビューとしてに追加しUIToolbarます。UITextField

- (void)textFieldDidBeginEditing:(UITextField *)textField
{
    if (textField.tag <= 2)
    {
        textField.inputAccessoryView = [self createToolbar];
    }
}

テキスト フィールドをクリックすると、ツールバーが表示されたキーボードが表示されます。評価する ツールバーのテキスト フィールドでは、クリックしたテキスト フィールドのテキストを変更できます。テキスト フィールドがクリックされたときにカーソルがクリックされたテキスト フィールドにとどまるようになりました。

UITextFieldテキストフィールドがクリックされ、元のテキストフィールドがクリックされていないときに、カーソルがツールバーのに移動するようにするにはどうすればよいですか。また、テキスト フィールド内のテキストの編集を無効にするにはどうすればよいですか? ユーザーの操作を無効にしようとしましたが、テキスト フィールドをクリックできなくなりました。

4

1 に答える 1