UITextView
,带有可选的固定高度(可以替换为任何其他视图)InputStackView
,充当放置按钮的工具栏InputPlugin
Swift Package Manager 是一个用于自动化 Swift 代码分发的工具,并已集成到 swift
编译器中。一旦你设置好你的 Swift 包,添加 InputBarAccessoryView 作为依赖项就像将其添加到你的 Package.swift 的 dependencies 值中一样简单。
dependencies: [
.package(url: "https://github.com/nathantannar4/InputBarAccessoryView.git", .upToNextMajor(from: "6.0.0"))
]
您也可以通过 Xcode SPM 编辑器使用 URL 添加它
https://github.com/nathantannar4/InputBarAccessoryView.git
iOS 14.0+ Swift 6
最新的 iOS 13 版本是 v6.5.1
最新的 iOS 12 版本是 v5.5.0
CocoaPods 和 RxExtensions 已在 6.0.0 版本中移除
最新的 iOS 11 版本是 v5.1.0
最新的 Swift 5.0 版本是 v5.1.0
最新的 Swift 4.2 版本是 v4.2.2
查看示例项目,了解如何制作 iMessage、Slack、Facebook 和 GitHawk 输入栏!
将您的应用添加到使用此库的应用列表中,并提交 pull request。
iMessage 风格的 TypingIndicator,用于聊天应用
7.0.0
6.5.0
6.4.0
6.3.0
6.2.0
InputTextView
上的 canBecomeFirstResponder
以修复 UITextViewDelegate
方法未被调用的问题6.1.1
6.1.0
6.0.0
查看 CHANGELOG 以了解更多详情和旧版本。
发现 Bug?提交 Issue!
InputBarAccessoryView
的布局由 4 个 InputStackView
和一个 InputTextView
组成。子视图的内边距可以通过更改 padding
和 textViewPadding
属性轻松调整。约束将自动更新。
重要的是要注意,InputTextView
左侧和右侧的每个 InputStackView
都通过宽度约束进行锚定。这样,除了提供可以轻松调用的方法来通过将宽度约束常量设置为 0 来隐藏 InputTextView
右侧或左侧的所有按钮之外,InputTextView
将始终填充两者之间的空间。底部和顶部堆栈视图没有高度约束,而是依赖于它们的 intrinsicContentSize
。
func setLeftStackViewWidthConstant(to newValue: CGFloat, animated: Bool)
func setRightStackViewWidthConstant(to newValue: CGFloat, animated: Bool)
每个 InputBarButtonItem
都有属性,可以保存将在各种钩子期间执行的操作,例如按钮被触摸、UITextView
文本更改等等!得益于这些简单的钩子,只需几行代码,就可以轻松地调整项目的大小和动画,类似于 Facebook Messenger 应用程序。
// MARK: - Hooks
public typealias InputBarButtonItemAction = ((InputBarButtonItem) -> Void)
private var onTouchUpInsideAction: InputBarButtonItemAction?
private var onKeyboardEditingBeginsAction: InputBarButtonItemAction?
private var onKeyboardEditingEndsAction: InputBarButtonItemAction?
private var onKeyboardSwipeGestureAction: ((InputBarButtonItem, UISwipeGestureRecognizer) -> Void)?
private var onTextViewDidChangeAction: ((InputBarButtonItem, InputTextView) -> Void)?
private var onSelectedAction: InputBarButtonItemAction?
private var onDeselectedAction: InputBarButtonItemAction?
private var onEnabledAction: InputBarButtonItemAction?
private var onDisabledAction: InputBarButtonItemAction?
Nathan Tannar - https://nathantannar.me Jakub Kaspar - https://jakubkaspar.dev
根据 MIT 许可证分发。有关更多信息,请参阅 LICENSE
。