私UIToolbar
はプログラムで作成した を持っておりUITextField
、UIButton
別のサブビューとして追加されています。以下のコードは、 を作成して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
テキストフィールドがクリックされ、元のテキストフィールドがクリックされていないときに、カーソルがツールバーのに移動するようにするにはどうすればよいですか。また、テキスト フィールド内のテキストの編集を無効にするにはどうすればよいですか? ユーザーの操作を無効にしようとしましたが、テキスト フィールドをクリックできなくなりました。