iphone - 自定义 UIPickerView 上方的 UIToolbar 未接收触摸

标签 iphone ios ipad uipickerview subclass

我已经对 UIPickerView 进行了子类化,以添加一些更多的功能(我 99% 确定它与这个问题无关)。在 drawRect 中,我添加了一个工具栏,以便更容易地关闭工具栏,问题是,UIToolbar 或工具栏中的 UIBarButtonItem 都不会接收触摸。几乎就好像 View 是“不可见的”,因为触摸被转发到其后面的 View (UITableView)。我知道我可以制作一个“控制” View 来容纳选择器和工具栏。但我只是想知道是否有任何方法可以在不创建另一个 View 的情况下做到这一点?

这是我的绘制矩形代码:

- (void)drawRect:(CGRect)rect
{

    if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {

        pickerToolbar = [[UIToolbar alloc] initWithFrame: CGRectMake(0, 0, self.frame.size.width,  40)];


        UIBarButtonItem *closeButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: UIBarButtonSystemItemDone target: self.delegate action: closeAction];

        [pickerToolbar setItems: [NSArray arrayWithObject: closeButton]];

        [self addSubview: pickerToolbar];
    }
}

这是一张照片:

My custom UIPicker

最佳答案

永远,永远不要这样做。每次绘制选择器时,您都会添加一个新的 subview !

如果您的选择器 View 是文本字段的输入 View ,只需创建一个工具栏并将其添加为输入附件 View 即可。然后它将出现在选择器上方。这是实现此行为的标准方法。

关于iphone - 自定义 UIPickerView 上方的 UIToolbar 未接收触摸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9799475/

相关文章:

ios - 我的 iOS 应用程序卡住但没有出现错误

ios - 如何以编程方式断开 TCP/IP 套接字连接?

ios - 如何在不调用的情况下从另一个应用程序中打开电话应用程序?

ios - React-Native 中的多屏定位

iphone - 按下按钮时停止声音 iOS

objective-c - iPhone 应用程序崩溃并出现错误 : Terminating app due to uncaught exception 'NSInternalInconsistencyException' , 原因:“无法在 bundle 中加载 NIB:

iphone - 如何使用Linux系统进行iphone开发?

ios - XCode 12 和 IOS 14 中 UITableView 的问题

ios - UIButton 将文本设置在图像顶部

iphone - 如何将 iOS 无线 (OTA) 版本同步回 iTunes?