2222NSString * const SLKTextViewContentSizeDidChangeNotification = @" SLKTextViewContentSizeDidChangeNotification" ;
2323NSString * const SLKTextViewDidPasteItemNotification = @" SLKTextViewDidPasteItemNotification" ;
2424NSString * const SLKTextViewDidShakeNotification = @" SLKTextViewDidShakeNotification" ;
25- NSString * const SLKTextViewDidFinishDeletingNotification = @" SLKTextViewDidFinishDeletingNotification" ;
2625
2726NSString * const SLKTextViewPastedItemContentType = @" SLKTextViewPastedItemContentType" ;
2827NSString * const SLKTextViewPastedItemMediaType = @" SLKTextViewPastedItemMediaType" ;
2928NSString * const SLKTextViewPastedItemData = @" SLKTextViewPastedItemData" ;
3029
31- static NSTimeInterval kDeleteMaxTimeInterval = 0.5 ;
32-
3330@interface SLKTextView ()
34- {
35- NSTimeInterval _lastDeletionTimeInterval;
36- }
3731
3832// The label used as placeholder
3933@property (nonatomic , strong ) UILabel *placeholderLabel;
@@ -49,9 +43,6 @@ @interface SLKTextView ()
4943// Used for detecting if the scroll indicator was previously flashed
5044@property (nonatomic ) BOOL didFlashScrollIndicators;
5145
52- // Used to refresh the first responder's
53- @property (nonatomic , strong ) NSTimer *deletionTimer;
54-
5546@end
5647
5748@implementation SLKTextView
@@ -146,15 +137,6 @@ - (UILabel *)placeholderLabel
146137 return _placeholderLabel;
147138}
148139
149- - (NSTimer *)deletionTimer
150- {
151- if (!_deletionTimer) {
152- _deletionTimer = [NSTimer timerWithTimeInterval: kDeleteMaxTimeInterval target: self selector: @selector (_shouldRefreshFirstResponder: ) userInfo: nil repeats: NO ];
153- [[NSRunLoop currentRunLoop ] addTimer: _deletionTimer forMode: NSRunLoopCommonModes ];
154- }
155- return _deletionTimer;
156- }
157-
158140- (NSString *)placeholder
159141{
160142 return self.placeholderLabel .text ;
@@ -369,22 +351,6 @@ - (void)setUndoManagerEnabled:(BOOL)enabled
369351 _undoManagerEnabled = enabled;
370352}
371353
372- - (void )_invalidateDeletionTimer
373- {
374- if (!_deletionTimer) {
375- return ;
376- }
377-
378- [_deletionTimer invalidate ];
379- _deletionTimer = nil ;
380- }
381-
382- - (void )_invalidateFastDeletion
383- {
384- _fastDeleting = NO ;
385- _lastDeletionTimeInterval = 0 ;
386- }
387-
388354
389355#pragma mark - UITextView Overrides
390356
@@ -428,46 +394,6 @@ - (void)setTextAlignment:(NSTextAlignment)textAlignment
428394- (void )insertText : (NSString *)text
429395{
430396 [super insertText: text];
431-
432- [self _invalidateFastDeletion ];
433- }
434-
435- - (void )deleteBackward
436- {
437- // No need to call super on iOS8, or it will delete 2 characters at once
438- if (!SLK_IS_IOS8_AND_HIGHER ) {
439- [super deleteBackward ];
440- }
441-
442- NSTimeInterval deletionTimestamp = [[NSDate date ] timeIntervalSince1970 ];
443- NSTimeInterval delta = roundf (100.0 * (deletionTimestamp - _lastDeletionTimeInterval)) / 100.0 ;
444-
445- _fastDeleting = (self.hasText && delta <= kDeleteMaxTimeInterval );
446- _lastDeletionTimeInterval = deletionTimestamp;
447-
448- // Makes sure the first responder is refreshed when the user released the backward key
449- if (self.isFastDeleting ) {
450- [self _invalidateDeletionTimer ];
451- [self deletionTimer ];
452- }
453- }
454-
455- // Used on iOS8 to trigger 'deleteBackward' since it's no longer called by super.
456- // 'keyboardInputShouldDelete:' should be safe, since it doesn't call super, but it is still considered a private API.
457- - (BOOL )keyboardInputShouldDelete : (__unused id <UITextInput>)textInput
458- {
459- if (SLK_IS_IOS8_AND_HIGHER ) {
460- [self deleteBackward ];
461- }
462-
463- if (self.delegate && [self .delegate respondsToSelector: @selector (textView:shouldChangeTextInRange:replacementText: )]) {
464- NSRange range = self.selectedRange ;
465- if (range.location > 0 ) range.location --;
466- if (range.length == 0 && self.text .length > 0 ) range.length ++;
467- return [self .delegate textView: self shouldChangeTextInRange: range replacementText: @" ^H" ];
468- }
469-
470- return self.hasText ;
471397}
472398
473399
@@ -587,19 +513,6 @@ - (void)setTypingSuggestionEnabled:(BOOL)enabled
587513
588514 self.autocorrectionType = enabled ? UITextAutocorrectionTypeDefault : UITextAutocorrectionTypeNo;
589515 self.spellCheckingType = enabled ? UITextSpellCheckingTypeDefault : UITextSpellCheckingTypeNo;
590-
591- if (!self.isFastDeleting ) {
592- [self refreshFirstResponder ];
593- }
594- }
595-
596- - (void )_shouldRefreshFirstResponder : (NSTimer *)timer
597- {
598- [self refreshFirstResponder ];
599- [self _invalidateDeletionTimer ];
600- [self _invalidateFastDeletion ];
601-
602- [[NSNotificationCenter defaultCenter ] postNotificationName: SLKTextViewDidFinishDeletingNotification object: self ];
603516}
604517
605518- (void )refreshFirstResponder
@@ -856,9 +769,6 @@ - (void)dealloc
856769
857770 [self removeObserver: self forKeyPath: NSStringFromSelector (@selector (contentSize ))];
858771
859- [self _invalidateDeletionTimer ];
860- [self _invalidateFastDeletion ];
861-
862772 _placeholderLabel = nil ;
863773}
864774
0 commit comments