gpt4 book ai didi

ios - 工具栏按钮在像 accessoryView 这样的选择器 View 上添加时不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:06:29 25 4
gpt4 key购买 nike

当我在选取器 View 上添加工具栏时,工具栏按钮不起作用。它适用于 iOS 6,但不适用于 iOS 7。

 UIToolbar *toolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0 ,0, 320, 44)];
UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithTitle:@"Done"
style:UIBarButtonItemStyleBordered
target:self
action:@selector(handleDone)];

UIBarButtonItem *cancelButton = [[UIBarButtonItem alloc] initWithTitle:@"Cancel"
style:UIBarButtonItemStyleBordered
target:self
action:@selector(handleCancel)];

UIBarButtonItem *flexible = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace
target:self
action:nil];

[toolBar setItems:[NSArray arrayWithObjects:cancelButton, flexible, doneButton, nil] animated:YES];

[pikerView addSubview:toolBar];

最佳答案

应将带有“完成”按钮的 UIToolbar 添加到 成为第一响应者 的 View 的 inputAccessoryView 中。由于 UIView 类继承自 UIResponder,因此任何 View 都可能包含 inputViewinputAccessoryView。因此,您可以使用 UIResponder 的键盘显示/隐藏动画附带的默认动画行为,而不是以编程方式手动执行动画。

  1. UIView 的子类并覆盖 inputViewinputAccessoryView 属性并使它们读写。在这个例子中,我将子类化 UITableViewCell

    // FirstResponderTableViewCell.h
    @interface FirstResponderTableViewCell : UITableViewCell
    @property (readwrite, strong, nonatomic) UIView *inputView;
    @property (readwrite, strong, nonatomic) UIView *inputAccessoryView;
    @end
  2. 在子类的实现中覆盖 canBecomeFirstResponder

    // FirstResponderTableViewCell.m
    - (BOOL)canBecomeFirstResponder {
    return YES;
    }
  3. 在您的 View Controller 中,创建并分配选取器 View 和输入辅助工具栏

    // MyViewController.m
    - (void)viewDidLoad {
    [super viewDidLoad];
    UIPickerView *pickerView = [[UIPickerView alloc] init];
    UIToolbar *accessoryToolbar = [UIToolbar alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 44)];
    // Configure toolbar .....

    // note: myFirstResponderTableViewCell is an IBOutlet to a static cell in storyboard of type FirstResponderTableViewCell
    self.myFirstResponderTableViewCell.inputView = pickerView;
    self.myFirstResponderTableViewCell.inputAccessoryView = accessoryToolbar;
    }
  4. 不要忘记在需要时将第一响应者分配给 View (例如在内部 - tableView:didSelectRowAtIndexPath:)

    [self.myFirstResponderTableViewCell becomeFirstResponder];

希望这对您有所帮助。

引用:http://blog.swierczynski.net/2010/12/how-to-create-uipickerview-with-toolbar-above-it-in-ios/

关于ios - 工具栏按钮在像 accessoryView 这样的选择器 View 上添加时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21851012/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com