如何在不使用文本字段实例的情况下访问出现在键盘顶部的 ToolBar 或 InputAccessoryView

问题描述 投票:0回答:1

每当项目中出现键盘时,我都可以通过将观察者添加到UIKeyboardWillShowNotification来发现。

但是我想从全局而不是每个视图控制器访问出现在键盘顶部的工具栏

背景:

我正在使用 IQKeyboardManager 并且我正在使用它在键盘顶部设置按钮。

IQKeyboardManager 不使工具栏可供外部访问。

所以我想知道是否有任何方法可以在键盘出现时访问键盘并迭代键盘顶部的工具栏项目。

欢迎任何建议

更新:

问题来自于POD中的源代码。

IQUIView+IQKeyboardToolbar.m

  {
  //Flexible space
   [items addObject:[[self class] flexibleBarButtonItem]];
   
   //Title button
   toolbar.titleBarButton.title = titleText;
   if (@available(iOS 11.0, *)) {}
   else
   {
       toolbar.titleBarButton.customView.frame = CGRectZero;
   }

   [items addObject:toolbar.titleBarButton];
   
   //Flexible space
   [items addObject:[[self class] flexibleBarButtonItem]];
    }

因为他们的 pod 中有上述代码

即使工具栏中没有标题文本,它仍然被添加为工具栏上的项目,因此当我们打开辅助功能时,空标题按钮将被读取为变暗按钮。

我已经解决了

   if(titleText){
   //Flexible space
   [items addObject:[[self class] flexibleBarButtonItem]];
   
   //Title button
   toolbar.titleBarButton.title = titleText;
   if (@available(iOS 11.0, *)) {}
   else
   {
       toolbar.titleBarButton.customView.frame = CGRectZero;
   }

   [items addObject:toolbar.titleBarButton];
   
   //Flexible space
   [items addObject:[[self class] flexibleBarButtonItem]];
   }else{
   [items addObject:[[self class] flexibleBarButtonItem]];
   [items addObject:[[self class] flexibleBarButtonItem]];
   [items addObject:[[self class] flexibleBarButtonItem]];

   }

但我们无法从我们这边修复他们的吊舱。

所以我想知道是否可以访问键盘上方的工具栏,然后我可以有效地删除空项目并将项目再次添加回工具栏,这将解决我的问题。

ios uitoolbar uikeyboard iqkeyboardmanager toolbaritems
1个回答
0
投票

在我看来,你有一个无法更改的外部依赖项(因为需要一段时间才能将你的修复程序上游到他们的官方版本中),但你现在在他们的代码中有一个你想要的修复程序。

因此,解决这个问题的一种方法是在您的工作实践范围内,在您的项目中有一个 Xcode 构建脚本阶段,该阶段在编译之前“修补”Pod 的文件。请参阅命令

/usr/bin/patch
创建和应用补丁。

© www.soinside.com 2019 - 2024. All rights reserved.