From 83b9d5c682b21d88133f24da0f94dd56bd79e687 Mon Sep 17 00:00:00 2001 From: 单军华 Date: Thu, 19 Jul 2018 13:38:55 +0800 Subject: [PATCH] change --- screendisplay/Pods/YYText/YYText/YYTextView.h | 410 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 410 insertions(+), 0 deletions(-) diff --git a/screendisplay/Pods/YYText/YYText/YYTextView.h b/screendisplay/Pods/YYText/YYText/YYTextView.h new file mode 100755 index 0000000..db5a275 --- /dev/null +++ b/screendisplay/Pods/YYText/YYText/YYTextView.h @@ -0,0 +1,410 @@ +// +// YYTextView.h +// YYText <https://github.com/ibireme/YYText> +// +// Created by ibireme on 15/2/25. +// Copyright (c) 2015 ibireme. +// +// This source code is licensed under the MIT-style license found in the +// LICENSE file in the root directory of this source tree. +// + +#import <UIKit/UIKit.h> + +#if __has_include(<YYText/YYText.h>) +#import <YYText/YYTextParser.h> +#import <YYText/YYTextLayout.h> +#import <YYText/YYTextAttribute.h> +#else +#import "YYTextParser.h" +#import "YYTextLayout.h" +#import "YYTextAttribute.h" +#endif + +@class YYTextView; + +NS_ASSUME_NONNULL_BEGIN + +/** + The YYTextViewDelegate protocol defines a set of optional methods you can use + to receive editing-related messages for YYTextView objects. + + @discussion The API and behavior is similar to UITextViewDelegate, + see UITextViewDelegate's documentation for more information. + */ +@protocol YYTextViewDelegate <NSObject, UIScrollViewDelegate> +@optional +- (BOOL)textViewShouldBeginEditing:(YYTextView *)textView; +- (BOOL)textViewShouldEndEditing:(YYTextView *)textView; +- (void)textViewDidBeginEditing:(YYTextView *)textView; +- (void)textViewDidEndEditing:(YYTextView *)textView; +- (BOOL)textView:(YYTextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text; +- (void)textViewDidChange:(YYTextView *)textView; +- (void)textViewDidChangeSelection:(YYTextView *)textView; + +- (BOOL)textView:(YYTextView *)textView shouldTapHighlight:(YYTextHighlight *)highlight inRange:(NSRange)characterRange; +- (void)textView:(YYTextView *)textView didTapHighlight:(YYTextHighlight *)highlight inRange:(NSRange)characterRange rect:(CGRect)rect; +- (BOOL)textView:(YYTextView *)textView shouldLongPressHighlight:(YYTextHighlight *)highlight inRange:(NSRange)characterRange; +- (void)textView:(YYTextView *)textView didLongPressHighlight:(YYTextHighlight *)highlight inRange:(NSRange)characterRange rect:(CGRect)rect; +@end + + +#if !TARGET_INTERFACE_BUILDER + +/** + The YYTextView class implements the behavior for a scrollable, multiline text region. + + @discussion The API and behavior is similar to UITextView, but provides more features: + + * It extends the CoreText attributes to support more text effects. + * It allows to add UIImage, UIView and CALayer as text attachments. + * It allows to add 'highlight' link to some range of text to allow user interact with. + * It allows to add exclusion paths to control text container's shape. + * It supports vertical form layout to display and edit CJK text. + * It allows user to copy/paste image and attributed text from/to text view. + * It allows to set an attributed text as placeholder. + + See NSAttributedString+YYText.h for more convenience methods to set the attributes. + See YYTextAttribute.h and YYTextLayout.h for more information. + */ +@interface YYTextView : UIScrollView <UITextInput> + + +#pragma mark - Accessing the Delegate +///============================================================================= +/// @name Accessing the Delegate +///============================================================================= + +@property (nullable, nonatomic, weak) id<YYTextViewDelegate> delegate; + + +#pragma mark - Configuring the Text Attributes +///============================================================================= +/// @name Configuring the Text Attributes +///============================================================================= + +/** + The text displayed by the text view. + Set a new value to this property also replaces the text in `attributedText`. + Get the value returns the plain text in `attributedText`. + */ +@property (null_resettable, nonatomic, copy) NSString *text; + +/** + The font of the text. Default is 12-point system font. + Set a new value to this property also causes the new font to be applied to the entire `attributedText`. + Get the value returns the font at the head of `attributedText`. + */ +@property (nullable, nonatomic, strong) UIFont *font; + +/** + The color of the text. Default is black. + Set a new value to this property also causes the new color to be applied to the entire `attributedText`. + Get the value returns the color at the head of `attributedText`. + */ +@property (nullable, nonatomic, strong) UIColor *textColor; + +/** + The technique to use for aligning the text. Default is NSTextAlignmentNatural. + Set a new value to this property also causes the new alignment to be applied to the entire `attributedText`. + Get the value returns the alignment at the head of `attributedText`. + */ +@property (nonatomic) NSTextAlignment textAlignment; + +/** + The text vertical aligmnent in container. Default is YYTextVerticalAlignmentTop. + */ +@property (nonatomic) YYTextVerticalAlignment textVerticalAlignment; + +/** + The types of data converted to clickable URLs in the text view. Default is UIDataDetectorTypeNone. + The tap or long press action should be handled by delegate. + */ +@property (nonatomic) UIDataDetectorTypes dataDetectorTypes; + +/** + The attributes to apply to links at normal state. Default is light blue color. + When a range of text is detected by the `dataDetectorTypes`, this value would be + used to modify the original attributes in the range. + */ +@property (nullable, nonatomic, copy) NSDictionary<NSString *, id> *linkTextAttributes; + +/** + The attributes to apply to links at highlight state. Default is a gray border. + When a range of text is detected by the `dataDetectorTypes` and the range was touched by user, + this value would be used to modify the original attributes in the range. + */ +@property (nullable, nonatomic, copy) NSDictionary<NSString *, id> *highlightTextAttributes; + +/** + The attributes to apply to new text being entered by the user. + When the text view's selection changes, this value is reset automatically. + */ +@property (nullable, nonatomic, copy) NSDictionary<NSString *, id> *typingAttributes; + +/** + The styled text displayed by the text view. + Set a new value to this property also replaces the value of the `text`, `font`, `textColor`, + `textAlignment` and other properties in text view. + + @discussion It only support the attributes declared in CoreText and YYTextAttribute. + See `NSAttributedString+YYText` for more convenience methods to set the attributes. + */ +@property (nullable, nonatomic, copy) NSAttributedString *attributedText; + +/** + When `text` or `attributedText` is changed, the parser will be called to modify the text. + It can be used to add code highlighting or emoticon replacement to text view. + The default value is nil. + + See `YYTextParser` protocol for more information. + */ +@property (nullable, nonatomic, strong) id<YYTextParser> textParser; + +/** + The current text layout in text view (readonly). + It can be used to query the text layout information. + */ +@property (nullable, nonatomic, strong, readonly) YYTextLayout *textLayout; + + +#pragma mark - Configuring the Placeholder +///============================================================================= +/// @name Configuring the Placeholder +///============================================================================= + +/** + The placeholder text displayed by the text view (when the text view is empty). + Set a new value to this property also replaces the text in `placeholderAttributedText`. + Get the value returns the plain text in `placeholderAttributedText`. + */ +@property (nullable, nonatomic, copy) NSString *placeholderText; + +/** + The font of the placeholder text. Default is same as `font` property. + Set a new value to this property also causes the new font to be applied to the entire `placeholderAttributedText`. + Get the value returns the font at the head of `placeholderAttributedText`. + */ +@property (nullable, nonatomic, strong) UIFont *placeholderFont; + +/** + The color of the placeholder text. Default is gray. + Set a new value to this property also causes the new color to be applied to the entire `placeholderAttributedText`. + Get the value returns the color at the head of `placeholderAttributedText`. + */ +@property (nullable, nonatomic, strong) UIColor *placeholderTextColor; + +/** + The styled placeholder text displayed by the text view (when the text view is empty). + Set a new value to this property also replaces the value of the `placeholderText`, + `placeholderFont`, `placeholderTextColor`. + + @discussion It only support the attributes declared in CoreText and YYTextAttribute. + See `NSAttributedString+YYText` for more convenience methods to set the attributes. + */ +@property (nullable, nonatomic, copy) NSAttributedString *placeholderAttributedText; + + +#pragma mark - Configuring the Text Container +///============================================================================= +/// @name Configuring the Text Container +///============================================================================= + +/** + The inset of the text container's layout area within the text view's content area. + */ +@property (nonatomic) UIEdgeInsets textContainerInset; + +/** + An array of UIBezierPath objects representing the exclusion paths inside the + receiver's bounding rectangle. Default value is nil. + */ +@property (nullable, nonatomic, copy) NSArray<UIBezierPath *> *exclusionPaths; + +/** + Whether the receiver's layout orientation is vertical form. Default is NO. + It may used to edit/display CJK text. + */ +@property (nonatomic, getter=isVerticalForm) BOOL verticalForm; + +/** + The text line position modifier used to modify the lines' position in layout. + See `YYTextLinePositionModifier` protocol for more information. + */ +@property (nullable, nonatomic, copy) id<YYTextLinePositionModifier> linePositionModifier; + +/** + The debug option to display CoreText layout result. + The default value is [YYTextDebugOption sharedDebugOption]. + */ +@property (nullable, nonatomic, copy) YYTextDebugOption *debugOption; + + +#pragma mark - Working with the Selection and Menu +///============================================================================= +/// @name Working with the Selection and Menu +///============================================================================= + +/** + Scrolls the receiver until the text in the specified range is visible. + */ +- (void)scrollRangeToVisible:(NSRange)range; + +/** + The current selection range of the receiver. + */ +@property (nonatomic) NSRange selectedRange; + +/** + A Boolean value indicating whether inserting text replaces the previous contents. + The default value is NO. + */ +@property (nonatomic) BOOL clearsOnInsertion; + +/** + A Boolean value indicating whether the receiver is selectable. Default is YES. + When the value of this property is NO, user cannot select content or edit text. + */ +@property (nonatomic, getter=isSelectable) BOOL selectable; + +/** + A Boolean value indicating whether the receiver is highlightable. Default is YES. + When the value of this property is NO, user cannot interact with the highlight range of text. + */ +@property (nonatomic, getter=isHighlightable) BOOL highlightable; + +/** + A Boolean value indicating whether the receiver is editable. Default is YES. + When the value of this property is NO, user cannot edit text. + */ +@property (nonatomic, getter=isEditable) BOOL editable; + +/** + A Boolean value indicating whether the receiver can paste image from pasteboard. Default is NO. + When the value of this property is YES, user can paste image from pasteboard via "paste" menu. + */ +@property (nonatomic) BOOL allowsPasteImage; + +/** + A Boolean value indicating whether the receiver can paste attributed text from pasteboard. Default is NO. + When the value of this property is YES, user can paste attributed text from pasteboard via "paste" menu. + */ +@property (nonatomic) BOOL allowsPasteAttributedString; + +/** + A Boolean value indicating whether the receiver can copy attributed text to pasteboard. Default is YES. + When the value of this property is YES, user can copy attributed text (with attachment image) + from text view to pasteboard via "copy" menu. + */ +@property (nonatomic) BOOL allowsCopyAttributedString; + + +#pragma mark - Manage the undo and redo +///============================================================================= +/// @name Manage the undo and redo +///============================================================================= + +/** + A Boolean value indicating whether the receiver can undo and redo typing with + shake gesture. The default value is YES. + */ +@property (nonatomic) BOOL allowsUndoAndRedo; + +/** + The maximum undo/redo level. The default value is 20. + */ +@property (nonatomic) NSUInteger maximumUndoLevel; + + +#pragma mark - Replacing the System Input Views +///============================================================================= +/// @name Replacing the System Input Views +///============================================================================= + +/** + The custom input view to display when the text view becomes the first responder. + It can be used to replace system keyboard. + + @discussion If set the value while first responder, it will not take effect until + 'reloadInputViews' is called. + */ +@property (nullable, nonatomic, readwrite, strong) __kindof UIView *inputView; + +/** + The custom accessory view to display when the text view becomes the first responder. + It can be used to add a toolbar at the top of keyboard. + + @discussion If set the value while first responder, it will not take effect until + 'reloadInputViews' is called. + */ +@property (nullable, nonatomic, readwrite, strong) __kindof UIView *inputAccessoryView; + +/** + If you use an custom accessory view without "inputAccessoryView" property, + you may set the accessory view's height. It may used by auto scroll calculation. + */ +@property (nonatomic) CGFloat extraAccessoryViewHeight; + +@end + + +#else // TARGET_INTERFACE_BUILDER +IB_DESIGNABLE +@interface YYTextView : UIScrollView <UITextInput> +@property (null_resettable, nonatomic, copy) IBInspectable NSString *text; +@property (nullable, nonatomic, strong) IBInspectable UIColor *textColor; +@property (nullable, nonatomic, strong) IBInspectable NSString *fontName_; +@property (nonatomic) IBInspectable CGFloat fontSize_; +@property (nonatomic) IBInspectable BOOL fontIsBold_; +@property (nonatomic) IBInspectable NSTextAlignment textAlignment; +@property (nonatomic) IBInspectable YYTextVerticalAlignment textVerticalAlignment; +@property (nullable, nonatomic, copy) IBInspectable NSString *placeholderText; +@property (nullable, nonatomic, strong) IBInspectable UIColor *placeholderTextColor; +@property (nullable, nonatomic, strong) IBInspectable NSString *placeholderFontName_; +@property (nonatomic) IBInspectable CGFloat placeholderFontSize_; +@property (nonatomic) IBInspectable BOOL placeholderFontIsBold_; +@property (nonatomic, getter=isVerticalForm) IBInspectable BOOL verticalForm; +@property (nonatomic) IBInspectable BOOL clearsOnInsertion; +@property (nonatomic, getter=isSelectable) IBInspectable BOOL selectable; +@property (nonatomic, getter=isHighlightable) IBInspectable BOOL highlightable; +@property (nonatomic, getter=isEditable) IBInspectable BOOL editable; +@property (nonatomic) IBInspectable BOOL allowsPasteImage; +@property (nonatomic) IBInspectable BOOL allowsPasteAttributedString; +@property (nonatomic) IBInspectable BOOL allowsCopyAttributedString; +@property (nonatomic) IBInspectable BOOL allowsUndoAndRedo; +@property (nonatomic) IBInspectable NSUInteger maximumUndoLevel; +@property (nonatomic) IBInspectable CGFloat insetTop_; +@property (nonatomic) IBInspectable CGFloat insetBottom_; +@property (nonatomic) IBInspectable CGFloat insetLeft_; +@property (nonatomic) IBInspectable CGFloat insetRight_; +@property (nonatomic) IBInspectable BOOL debugEnabled_; +@property (nullable, nonatomic, weak) id<YYTextViewDelegate> delegate; +@property (nullable, nonatomic, strong) UIFont *font; +@property (nonatomic) UIDataDetectorTypes dataDetectorTypes; +@property (nullable, nonatomic, copy) NSDictionary *linkTextAttributes; +@property (nullable, nonatomic, copy) NSDictionary *highlightTextAttributes; +@property (nullable, nonatomic, copy) NSDictionary *typingAttributes; +@property (nullable, nonatomic, copy) NSAttributedString *attributedText; +@property (nullable, nonatomic, strong) id<YYTextParser> textParser; +@property (nullable, nonatomic, strong, readonly) YYTextLayout *textLayout; +@property (nullable, nonatomic, strong) UIFont *placeholderFont; +@property (nullable, nonatomic, copy) NSAttributedString *placeholderAttributedText; +@property (nonatomic) UIEdgeInsets textContainerInset; +@property (nullable, nonatomic, copy) NSArray *exclusionPaths; +@property (nullable, nonatomic, copy) id<YYTextLinePositionModifier> linePositionModifier; +@property (nullable, nonatomic, copy) YYTextDebugOption *debugOption; +- (void)scrollRangeToVisible:(NSRange)range; +@property (nonatomic) NSRange selectedRange; +@property (nullable, nonatomic, readwrite, strong) __kindof UIView *inputView; +@property (nullable, nonatomic, readwrite, strong) __kindof UIView *inputAccessoryView; +@property (nonatomic) CGFloat extraAccessoryViewHeight; +@end +#endif // !TARGET_INTERFACE_BUILDER + + +// Notifications, see UITextView's documentation for more information. +UIKIT_EXTERN NSString *const YYTextViewTextDidBeginEditingNotification; +UIKIT_EXTERN NSString *const YYTextViewTextDidChangeNotification; +UIKIT_EXTERN NSString *const YYTextViewTextDidEndEditingNotification; + +NS_ASSUME_NONNULL_END -- Gitblit v1.8.0