1

自从升级到 Xcode 5.1 后,我的 inputAccesoryView 出现问题。

InputAccessoryView 后面的键盘键

正如您在所附图像中看到的那样,在 inputAccesoryView 内的工具栏后面弹出键。我认为它与新版本的 xcode 有关,因为它与以前版本的 xcode 没问题。

创建和添加附件视图的代码:

    self.keyboardDoneButtonView = [[UIToolbar alloc] init];
    self.keyboardDoneButtonView.barStyle = UIBarStyleBlack;

    self.addEmailUITextField = [[UITextField alloc] init];
    [self.addEmailUITextField setReturnKeyType:UIReturnKeySend];
    [self.addEmailUITextField setBorderStyle:UITextBorderStyleRoundedRect];
    [self.addEmailUITextField setAutocorrectionType:UITextAutocorrectionTypeNo];
    [self.addEmailUITextField setAutocapitalizationType:UITextAutocapitalizationTypeNone];
    [self.addEmailUITextField setKeyboardType:UIKeyboardTypeEmailAddress];
    [self.addEmailUITextField setClearButtonMode:UITextFieldViewModeWhileEditing];
    [self.addEmailUITextField setKeyboardAppearance:UIKeyboardAppearanceDark];
    [self.addEmailUITextField setPlaceholder:NSLocalizedString(@"emailHint", nil)];

    self.cancel = [[UIButton alloc] init];
    [self.cancel setTitleColor:[UIColor khipuSecondaryColor] forState:UIControlStateNormal];
    [self.cancel setTitle:NSLocalizedString(@"cancel", nil) forState:UIControlStateNormal];
    [self.cancel addTarget:self action:@selector(hideAddEmailTextField) forControlEvents:UIControlEventTouchUpInside];
    [self.cancel sizeToFit];
    self.cancel.frame = CGRectMake((self.tableView.frame.size.width - (self.cancel.frame.size.width + 20)), self.cancel.frame.origin.y, self.cancel.frame.size.width, self.cancel.frame.size.height);
    self.addEmailUITextField.frame = CGRectMake(5, 7, (self.cancel.frame.origin.x - 10) - 5, 30);
    UIBarButtonItem *cancelUIBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:self.cancel];
    UIBarButtonItem *textFieldItem = [[UIBarButtonItem alloc] initWithCustomView:self.addEmailUITextField];

    [self.keyboardDoneButtonView setItems:[NSArray arrayWithObjects:textFieldItem,cancelUIBarButtonItem, nil]];
    [self.keyboardDoneButtonView sizeToFit];
    self.hiddenUITextField = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 0, 0)];
    self.hiddenUITextField.inputAccessoryView = self.keyboardDoneButtonView;
    [self.hiddenUITextField setKeyboardAppearance:UIKeyboardAppearanceDark];
    [self.addEmailUITextField setDelegate:self];

在 xcode 升级之前,此代码可以很好地工作

任何人都可以阐明这个问题吗?

4

2 回答 2

1

找到问题了!:这是一个类别。

我在 UIView 上有一个类别,用于在子视图中进行搜索。

我有一个名为

- (BOOL)containsView:(UIView *)aUIView;

这打破了这种行为。更改了方法的名称,现在它可以正常工作了。

我不知道,但也许我只是选择了一个私有 API 的签名。

感谢您的意见和想法,它帮助我找到了麻烦的根源。

于 2014-03-24T18:03:00.520 回答
0

我已经尝试了一个新项目,但我没有问题...您的问题可能不在您的代码中,而在您的 Xcode 设置中...这将对您有所帮助。

在此处输入图像描述

于 2014-03-19T21:19:33.613 回答