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

您说您已将 UIScrollView 添加到 UIViewController。我认为这意味着self.emailandself.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 回答