UITextView

extension UITextView: SkeletonViewDataSource

UITextView骨架屏视图数据源扩展

UITextView+TextViewDelegate

Keyboard

  • 是否启用键盘管理(自动滚动),默认NO

    Declaration

    Swift

    @objc
    dynamic public var fw_keyboardManager: Bool { get set }
  • 设置输入框和键盘的空白间距,默认10.0

    Declaration

    Swift

    @objc
    dynamic public var fw_keyboardDistance: CGFloat { get set }
  • 设置输入框和键盘的空白间距句柄,参数为键盘高度、输入框高度,优先级高,默认nil

    Declaration

    Swift

    @objc
    dynamic public var fw_keyboardDistanceBlock: ((_ keyboardHeight: CGFloat, _ height: CGFloat) -> CGFloat)? { get set }
  • 设置输入框和键盘的回弹触发最小距离,默认0始终回弹

    Declaration

    Swift

    @objc
    dynamic public var fw_reboundDistance: CGFloat { get set }
  • 是否启用键盘后台关闭处理,退后台时收起键盘,回到前台时恢复键盘,解决系统退后台输入框跳动问题,默认NO

    Declaration

    Swift

    @objc
    dynamic public var fw_keyboardResign: Bool { get set }
  • 是否启用点击背景关闭键盘(会继续触发其它点击事件),默认NO

    Declaration

    Swift

    @objc
    dynamic public var fw_touchResign: Bool { get set }
  • 指定用于键盘管理滚动的scrollView,默认为nil,通过修改VC.view.frame实现

    Declaration

    Swift

    public weak var fw_keyboardScrollView: UIScrollView? { get set }

Return

  • 点击键盘完成按钮是否关闭键盘,默认NO,二选一。此方法会修改delegate,可使用fwDelegate访问原始delegate

    Declaration

    Swift

    @objc
    dynamic public var fw_returnResign: Bool { get set }
  • 设置点击键盘完成按钮是否自动切换下一个输入框,二选一。此方法会修改delegate,可使用fwDelegate访问原始delegate

    Declaration

    Swift

    public var fw_returnNext: Bool { get set }
  • 设置点击键盘完成按钮的事件句柄。此方法会修改delegate,可使用fwDelegate访问原始delegate

    Declaration

    Swift

    public var fw_returnBlock: ((UITextView) -> Void)? { get set }
  • 调用上面三个方法后会修改delegate,此方法始终访问外部delegate

    Declaration

    Swift

    public weak var fw_delegate: UITextViewDelegate? { get set }

Toolbar

  • 获取关联的键盘Toolbar对象,可自定义样式

    Declaration

    Swift

    public var fw_keyboardToolbar: UIToolbar { get set }
  • 自定义键盘Toolbar上一个按钮,支持图片|字符串等(详见FWBlock),默认朝上的箭头

    Declaration

    Swift

    public var fw_toolbarPreviousButton: Any? { get set }
  • 自定义键盘Toolbar下一个按钮,支持图片|字符串等(详见FWBlock),默认朝下的箭头

    Declaration

    Swift

    public var fw_toolbarNextButton: Any? { get set }
  • 自定义键盘Toolbar完成按钮,支持图片|字符串等(详见FWBlock),默认Done

    Declaration

    Swift

    public var fw_toolbarDoneButton: Any? { get set }
  • 设置Toolbar点击前一个按钮时聚焦的输入框句柄,默认nil

    Declaration

    Swift

    public var fw_previousResponder: ((UITextView) -> UIResponder?)? { get set }
  • 设置Toolbar点击下一个按钮时聚焦的输入框句柄,默认nil

    Declaration

    Swift

    public var fw_nextResponder: ((UITextView) -> UIResponder?)? { get set }
  • 设置Toolbar点击前一个按钮时聚焦的输入框tag,默认0不生效

    Declaration

    Swift

    public var fw_previousResponderTag: Int { get set }
  • 设置Toolbar点击下一个按钮时聚焦的输入框tag,默认0不生效

    Declaration

    Swift

    public var fw_nextResponderTag: Int { get set }
  • 自动跳转前一个输入框,优先使用previousResponder,其次根据responderTag查找

    Declaration

    Swift

    public func fw_goPrevious()
  • 自动跳转后一个输入框,优先使用nextResponder,其次根据responderTag查找

    Declaration

    Swift

    public func fw_goNext()
  • 获取键盘弹出时的高度,对应Key为UIKeyboardFrameEndUserInfoKey

    Declaration

    Swift

    public func fw_keyboardHeight(_ notification: Notification) -> CGFloat
  • 执行键盘跟随动画,支持AutoLayout,可通过keyboardHeight:获取键盘高度

    Declaration

    Swift

    public func fw_keyboardAnimate(_ notification: Notification, animations: @escaping () -> Void, completion: ((Bool) -> Void)? = nil)
  • 添加Toolbar,指定标题和完成句柄,使用默认按钮

    Declaration

    Swift

    public func fw_addToolbar(title: Any? = nil, doneBlock: ((Any) -> Void)? = nil)

    Parameters

    title

    标题,不能点击

    doneBlock

    右侧完成按钮句柄,默认收起键盘

  • 添加Toolbar,指定居中标题、左侧上一个、下一个按钮和右边按钮

    Declaration

    Swift

    public func fw_addToolbar(titleItem: UIBarButtonItem?, previousItem: UIBarButtonItem?, nextItem: UIBarButtonItem?, doneItem: UIBarButtonItem?)

    Parameters

    titleItem

    居中标题按钮

    previousItem

    左侧前一个按钮

    nextItem

    左侧下一个按钮

    doneItem

    右侧完成按钮

UITextView+Placeholder

  • 占位文本,默认nil

    Declaration

    Swift

    public var fw_placeholder: String? { get set }
  • 占位颜色,默认系统颜色

    Declaration

    Swift

    public var fw_placeholderColor: UIColor? { get set }
  • 带属性占位文本,默认nil

    Declaration

    Swift

    public var fw_attributedPlaceholder: NSAttributedString? { get set }
  • 自定义占位文本内间距,默认zero与内容一致

    Declaration

    Swift

    public var fw_placeholderInset: UIEdgeInsets { get set }
  • 自定义垂直分布方式,会自动修改contentInset,默认Top与系统一致

    Declaration

    Swift

    public var fw_verticalAlignment: UIControl.ContentVerticalAlignment { get set }
  • 是否启用自动高度功能,随文字改变高度

    Declaration

    Swift

    public var fw_autoHeightEnabled: Bool { get set }
  • 最大高度,默认CGFLOAT_MAX,启用自动高度后生效

    Declaration

    Swift

    public var fw_maxHeight: CGFloat { get set }
  • 最小高度,默认0,启用自动高度后生效

    Declaration

    Swift

    public var fw_minHeight: CGFloat { get set }
  • 高度改变回调句柄,默认nil,启用自动高度后生效

    Declaration

    Swift

    public var fw_heightDidChange: ((CGFloat) -> Void)? { get set }
  • 快捷启用自动高度,并设置最大高度和回调句柄

    Declaration

    Swift

    public func fw_autoHeight(maxHeight: CGFloat, didChange: ((CGFloat) -> Void)? = nil)

UITextView+UIKit

  • 最大字数限制,0为无限制,二选一

    Declaration

    Swift

    public var fw_maxLength: Int { get set }
  • 最大Unicode字数限制(中文为1,英文为0.5),0为无限制,二选一

    Declaration

    Swift

    public var fw_maxUnicodeLength: Int { get set }
  • 自定义文字改变处理句柄,自动trimString,默认nil

    Declaration

    Swift

    public var fw_textChangedBlock: ((String) -> Void)? { get set }
  • 文本长度发生改变,自动检测字数限制,用于代码设置text等场景

    Declaration

    Swift

    public func fw_textLengthChanged()
  • 获取满足最大字数限制的过滤后的文本,无需再调用textLengthChanged

    Declaration

    Swift

    public func fw_filterText(_ text: String) -> String
  • 设置自动完成时间间隔,默认0.5秒,和autoCompleteBlock配套使用

    Declaration

    Swift

    public var fw_autoCompleteInterval: TimeInterval { get set }
  • 设置自动完成处理句柄,默认nil,注意输入框内容为空时会立即触发

    Declaration

    Swift

    public var fw_autoCompleteBlock: ((String) -> Void)? { get set }
  • 是否禁用长按菜单(拷贝、选择、粘贴等),默认NO

    Declaration

    Swift

    public var fw_menuDisabled: Bool { get set }
  • 自定义光标偏移和大小,不为0才会生效,默认zero不生效

    Declaration

    Swift

    public var fw_cursorRect: CGRect { get set }
  • 获取及设置当前选中文字范围

    Declaration

    Swift

    public var fw_selectedRange: NSRange { get set }
  • 移动光标到最后

    Declaration

    Swift

    public func fw_selectAllRange()
  • 移动光标到指定位置,兼容动态text赋值

    Declaration

    Swift

    public func fw_moveCursor(_ offset: Int)
  • 计算当前文本所占尺寸,包含textContainerInset,需frame或者宽度布局完整

    Declaration

    Swift

    public var fw_textSize: CGSize { get }
  • 计算指定边界时,当前文本所占尺寸,包含textContainerInset

    Declaration

    Swift

    public func fw_textSize(drawSize: CGSize, contentInset: UIEdgeInsets? = nil) -> CGSize
  • 计算当前属性文本所占尺寸,包含textContainerInset,需frame或者宽度布局完整,attributedText需指定字体

    Declaration

    Swift

    public var fw_attributedTextSize: CGSize { get }
  • 计算指定边界时,当前属性文本所占尺寸,包含textContainerInset,attributedText需指定字体

    Declaration

    Swift

    public func fw_attributedTextSize(drawSize: CGSize, contentInset: UIEdgeInsets? = nil) -> CGSize
  • 快捷设置行高,兼容placeholder和typingAttributes。小于等于0时恢复默认行高

    Declaration

    Swift

    public var fw_lineHeight: CGFloat { get set }
  • 获取当前文本框是否非空,兼容attributedText|text

    Declaration

    Swift

    public var fw_isNotEmpty: Bool { get }
  • 计算当前文本框实际显示行数,兼容textContainerInset|lineHeight

    Declaration

    Swift

    public var fw_actualNumberOfLines: Int { get }
  • 计算指定边界、内边距、行高时,当前文本框实际显示行数

    Declaration

    Swift

    public func fw_actualNumberOfLines(drawSize: CGSize, contentInset: UIEdgeInsets? = nil, lineHeight: CGFloat? = nil) -> Int