0

以下を使用して、UIToolBar を UITextField に追加しています。

- (void)viewDidLoad {

    [super viewDidLoad];

    self.email.delegate = self;
    self.password.delegate = self;

    UIToolbar* toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, 44)];

    UIBarButtonItem* previous = [[UIBarButtonItem alloc] initWithTitle:@"Anterior" style:UIBarButtonItemStyleBordered target:self action:@selector(move:)];
    UIBarButtonItem* next = [[UIBarButtonItem alloc] initWithTitle:@"Próximo" style:UIBarButtonItemStyleBordered target:self action:@selector(move:)];
    UIBarButtonItem* space = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:(UIBarButtonSystemItemFlexibleSpace) target:nil action:nil];
    UIBarButtonItem* ok = [[UIBarButtonItem alloc] initWithTitle:@"Ok" style:UIBarButtonItemStyleBordered target:self action:@selector(ok:)];

    [toolbar setItems:[[NSArray alloc] initWithObjects:previous, next, space, ok, nil]];

    [toolbar setTranslucent:YES];
    [toolbar setTintColor:[UIColor blackColor]];

    for (UIView* view in self.view.subviews) {
        if ([view isKindOfClass:[UITextField class]]) {
            [(UITextField*)view setInputAccessoryView:toolbar];
        }
    }

}

UIScrollView を UIViewController に追加すると、UIToolBar が表示されなくなりました。私は何が欠けていますか?スクロールビューではなくビューにツールバーを追加していると思います。スクロールビューがビューの上にあるため、ツールバーが表示されません。どうすれば修正できますか?コンテンツをキーボードの後ろに移動するには、スクロール ビューに追加する必要があります。

4

1 に答える 1

1

UIViewController に UIScrollView を追加したと言います。self.emailこれは、とself.passwordがこのスクロール ビューのサブビューであり、メインの UIViewController のサブビューではないことを意味すると思いますview。そのため、プロパティのサブビューを反復処理するコードはview、UITextFields を見つけられません。

だからあなたのコード:

for (UIView* view in self.view.subviews) {

次のようになります (scrollView はプロパティであると想定しています)。

for (UIView* view in self.scrollView.subviews) {

これに対処する別の方法は、UITextFieldDelegate メソッドを使用して、inputAccessoryView編集の開始に応じてプロパティを追加することです。たとえば、

- (void) textFieldDidBeginEditing:(UITextField *)textField{
    [textField setInputAccessoryView:keyboardToolbar];
}
于 2012-10-11T20:34:09.350 に答える