Skip to content

Commit 9b173e1

Browse files
author
Semen Osipov
committed
Refactoring
1 parent 0462835 commit 9b173e1

2 files changed

Lines changed: 108 additions & 76 deletions

File tree

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
//
2+
// File.swift
3+
// ARGrowingTextView
4+
//
5+
// Created by Семён Осипов on 04.02.2025.
6+
//
7+
8+
import Foundation
9+
import UIKit
10+
11+
/// UITextView properties
12+
public extension ARGrowingTextView {
13+
14+
var displayPlaceHolder: Bool {
15+
get { internalTextView.displayPlaceHolder }
16+
set { internalTextView.displayPlaceHolder = newValue }
17+
}
18+
var placeholderColor: UIColor? {
19+
get { internalTextView.placeholderColor }
20+
set { internalTextView.placeholderColor = newValue }
21+
}
22+
23+
var textColor: UIColor? {
24+
get { internalTextView.textColor }
25+
set { internalTextView.textColor = newValue }
26+
}
27+
var textAlignment: NSTextAlignment {
28+
get { internalTextView.textAlignment }
29+
set { internalTextView.textAlignment = newValue }
30+
}
31+
var selectedRange: NSRange { // only ranges of length 0 are supported
32+
get { internalTextView.selectedRange }
33+
set { internalTextView.selectedRange = newValue }
34+
}
35+
var editable: Bool {
36+
get { internalTextView.isEditable }
37+
set { internalTextView.isEditable = newValue }
38+
}
39+
var dataDetectorTypes: UIDataDetectorTypes {
40+
get { internalTextView.dataDetectorTypes }
41+
set { internalTextView.dataDetectorTypes = newValue }
42+
}
43+
var returnKeyType: UIReturnKeyType {
44+
get { internalTextView.returnKeyType }
45+
set { internalTextView.returnKeyType = newValue }
46+
}
47+
var keyboardType: UIKeyboardType {
48+
get { internalTextView.keyboardType }
49+
set { internalTextView.keyboardType = newValue }
50+
}
51+
var keyboardDismissMode: UIScrollView.KeyboardDismissMode {
52+
get { internalTextView.keyboardDismissMode }
53+
set { internalTextView.keyboardDismissMode = newValue }
54+
}
55+
var contentInsetAdjustmentBehavior: UIScrollView.ContentInsetAdjustmentBehavior {
56+
get { internalTextView.contentInsetAdjustmentBehavior }
57+
set { internalTextView.contentInsetAdjustmentBehavior = newValue }
58+
}
59+
@available(iOS, deprecated: 13.0)
60+
var scrollIndicatorInsets: UIEdgeInsets {
61+
get { internalTextView.scrollIndicatorInsets }
62+
set { internalTextView.scrollIndicatorInsets = newValue }
63+
}
64+
var verticalScrollIndicatorInsets: UIEdgeInsets {
65+
get { internalTextView.verticalScrollIndicatorInsets }
66+
set { internalTextView.verticalScrollIndicatorInsets = newValue}
67+
}
68+
var horizontalScrollIndicatorInsets: UIEdgeInsets {
69+
get { internalTextView.horizontalScrollIndicatorInsets }
70+
set { internalTextView.horizontalScrollIndicatorInsets = newValue}
71+
}
72+
73+
var isScrollable: Bool {
74+
get { internalTextView.isScrollEnabled }
75+
set { internalTextView.isScrollEnabled = newValue }
76+
}
77+
var enablesReturnKeyAutomatically: Bool {
78+
get { internalTextView.enablesReturnKeyAutomatically }
79+
set { internalTextView.enablesReturnKeyAutomatically = newValue }
80+
}
81+
82+
override var isFirstResponder: Bool {
83+
internalTextView.isFirstResponder
84+
}
85+
86+
var hasText: Bool {
87+
internalTextView.hasText
88+
}
89+
}

ARGrowingTextView/ARGrowingTextView/Source/ARGrowingTextView.swift

Lines changed: 19 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -62,28 +62,6 @@ open class ARGrowingTextView: UIView {
6262
public var animateHeightChange = true
6363
public var animationDuration: TimeInterval = 0.1
6464

65-
public var placeholder: String? {
66-
get { internalTextView.placeholder }
67-
set {
68-
internalTextView.placeholder = newValue
69-
internalTextView.setNeedsDisplay()
70-
}
71-
}
72-
73-
public var placeholderColor: UIColor? {
74-
get { internalTextView.placeholderColor }
75-
set { internalTextView.placeholderColor = newValue }
76-
}
77-
78-
public override var backgroundColor: UIColor? {
79-
get { internalTextView.backgroundColor }
80-
set {
81-
super.backgroundColor = newValue
82-
internalTextView.backgroundColor = newValue
83-
}
84-
}
85-
86-
// uitextview properties
8765
public var text: String? {
8866
get { internalTextView.text }
8967
set {
@@ -100,34 +78,23 @@ open class ARGrowingTextView: UIView {
10078
recalculateMinAndMaxHeights()
10179
}
10280
}
103-
public var textColor: UIColor? {
104-
get { internalTextView.textColor }
105-
set { internalTextView.textColor = newValue }
106-
}
107-
public var textAlignment: NSTextAlignment {
108-
get { internalTextView.textAlignment }
109-
set { internalTextView.textAlignment = newValue }
110-
}
111-
public var selectedRange: NSRange {// only ranges of length 0 are supported
112-
get { internalTextView.selectedRange }
113-
set { internalTextView.selectedRange = newValue }
114-
}
115-
public var editable: Bool {
116-
get { internalTextView.isEditable }
117-
set { internalTextView.isEditable = newValue }
118-
}
119-
public var dataDetectorTypes: UIDataDetectorTypes {
120-
get { internalTextView.dataDetectorTypes }
121-
set { internalTextView.dataDetectorTypes = newValue }
122-
}
123-
public var returnKeyType: UIReturnKeyType {
124-
get { internalTextView.returnKeyType }
125-
set { internalTextView.returnKeyType = newValue }
81+
82+
public var placeholder: String? {
83+
get { internalTextView.placeholder }
84+
set {
85+
internalTextView.placeholder = newValue
86+
internalTextView.setNeedsDisplay()
87+
}
12688
}
127-
public var keyboardType: UIKeyboardType {
128-
get { internalTextView.keyboardType }
129-
set { internalTextView.keyboardType = newValue }
89+
90+
public override var backgroundColor: UIColor? {
91+
get { internalTextView.backgroundColor }
92+
set {
93+
super.backgroundColor = newValue
94+
internalTextView.backgroundColor = newValue
95+
}
13096
}
97+
13198
public var contentInset: UIEdgeInsets = .zero {
13299
didSet {
133100
textViewTopConstraint?.constant = contentInset.top
@@ -139,31 +106,6 @@ open class ARGrowingTextView: UIView {
139106
recalculateMinAndMaxHeights()
140107
}
141108
}
142-
public var scrollIndicatorInsets: UIEdgeInsets {
143-
get {
144-
internalTextView.scrollIndicatorInsets
145-
}
146-
set {
147-
internalTextView.scrollIndicatorInsets = newValue
148-
}
149-
}
150-
151-
public var isScrollable: Bool {
152-
get { internalTextView.isScrollEnabled }
153-
set { internalTextView.isScrollEnabled = newValue }
154-
}
155-
public var enablesReturnKeyAutomatically: Bool {
156-
get { internalTextView.enablesReturnKeyAutomatically }
157-
set { internalTextView.enablesReturnKeyAutomatically = newValue }
158-
}
159-
160-
public override var isFirstResponder: Bool {
161-
internalTextView.isFirstResponder
162-
}
163-
164-
public var hasText: Bool {
165-
internalTextView.hasText
166-
}
167109

168110
// MARK: Initialization
169111
// having initwithcoder allows us to use HPGrowingTextView in a Nib. -- aob, 9/2011
@@ -214,12 +156,12 @@ open class ARGrowingTextView: UIView {
214156

215157
sizeConfig.minHeight = height
216158

217-
internalTextView.text = ""
159+
text = ""
218160

219161
recalculateMinAndMaxHeights()
220162

221163
placeholderColor = .lightGray
222-
internalTextView.displayPlaceHolder = true
164+
displayPlaceHolder = true
223165

224166
addNotificationsObserver()
225167
}
@@ -240,7 +182,7 @@ open class ARGrowingTextView: UIView {
240182
internalTextView.showsHorizontalScrollIndicator = false
241183
internalTextView.text = "-"
242184
internalTextView.contentMode = .redraw
243-
internalTextView.placeholder = "ArealIdea"
185+
internalTextView.placeholder = "Areal"
244186
}
245187

246188
public override func sizeThatFits(_ size: CGSize) -> CGSize {
@@ -279,6 +221,7 @@ open class ARGrowingTextView: UIView {
279221

280222
// uitextview methods
281223
// need others? use .internalTextView
224+
@discardableResult
282225
public override func becomeFirstResponder() -> Bool {
283226
super.becomeFirstResponder()
284227
return internalTextView.becomeFirstResponder()

0 commit comments

Comments
 (0)