swiftUI textfield์ ๊ธธ์ด ์ ํ๋ฌ์ ์ ๋ ฅ๋ฐฉ์ง
textfield์ ๊ธธ์ด๋ฅผ ์ ํ๋ฌ์ ์ผ์ ๊ธธ์ด๋ฅผ ๋์ด์๋ฉด ๋์ด์ ์ ๋ ฅ์ด ์๋๊ฒ๋ ํ๋ ๊ฒ์ด ๋ชฉํ..!
(์ผ์ชฝ์ด ์ฐ๋ฆฌ๊ฐ ํ๊ณ ์ ํ๋ ๊ฒ)
๋จผ์ , TextLimiter ํด๋์ค๋ฅผ ๋ง๋ ๋ค
- Publish ๊ฐ์ ์ฌ์ฉํ๊ธฐ ์ํด ObservableObject๋ก ๋ง๋ค์ด์ค๋ค
- ๋จผ์ ๊ธฐ๋ณธ์ ์ธ ํ์ ์ก์๋ณธ๋ค (๋ณ์๋ค๊ณผ ๋ณ์๋ค์ ๋ด์ ์๋ฏธ, ๋ก์ง ๋ฑ)
class TextLimiter: ObservableObject {
private let limit: Int
init(limit: Int) {
self.limit = limit
}
@Published var value = ""
@Published var hasReachedLimit = false
}
- ์ฌ๊ธฐ์ limit์ ์ ํ์ ๋ ๊ธธ์ด (character limit)
- value ๋ณ์๋ Textfield์ ์ ๋ ฅ๋๋ ๊ฐ
- hasReachedLimit์ ๊ธธ์ด์ ํ์ ๋๋ฌํ๋์ง ์ํ๋์ง๋ฅผ ํ์ธํด์ฃผ๋ boolean ๊ฐ
์์์ ์ธ์ด ๋ก์ง์ ์ ์ฉํ๊ธฐ ์ํด value๋ณ์๋ฅผ ์๋์ ๊ฐ์ด updateํด์ค๋ค
@Published var value = "" {
didSet {
if value.count > self.limit {
value = String(value.prefix(self.limit))
self.hasReachedLimit = true
} else {
self.hasReachedLimit = false
}
}
}
๊ทธ๋ผ class TextLimiter๋ ์๋์ ๊ฐ์์ง ๊ฒ
class TextLimiter: ObservableObject {
private let limit: Int
init(limit: Int) {
self.limit = limit
}
@Published var value = "" {
didSet {
if value.count > self.limit {
value = String(value.prefix(self.limit))
self.hasReachedLimit = true
} else {
self.hasReachedLimit = false
}
}
}
@Published var hasReachedLimit = false
}
์ด์ ์ด๋ ๊ฒ ๋ง๋ ํด๋์ค๋ฅผ ์ฌ์ฉํด๋ณธ๋ค
์๋ ์์๋ฅผ ๋ณด์. ํ ์คํธ ๊ธธ์ด๋ฅผ 5๋ก ์ ํ
@ObservedObject var input = TextLimiter(limit: 5)
.border ๋ฅผ ์ด์ฉํด์ ๊ธธ์ด์ ํ์ ๋๋ฌํ๋ฉด ํ ์คํธ ์ฃผ์ border๋ฅผ ๋นจ๊ฐ์์ผ๋ก ์น ํ๋๋ก ํ๋ค
TextField("ํ
์คํธ ์
๋ ฅ์ฐฝ",
text: $input.value)
.border(Color.red,
width: $input.hasReachedLimit.wrappedValue ? 1 : 0 )
'Computer Science > swift ๋ฝ๊ฐ๊ธฐ - ์ฐธ๊ณ ์ฌ์ดํธ ์ ์ฅ์' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[swift] ์ ๊ทํํ์ ์ฌ์ฉํ๊ธฐ (0) | 2021.07.31 |
---|---|
[swift] TapGesture ๊ณต์๋ฌธ์ (0) | 2021.07.31 |
[swift] ์ธ์ฆ์ฝ๋ ์ ๋ ฅ ๋ทฐ - ์๋์ผ๋ก textfield ๋์ด๊ฐ๊ธฐ (0) | 2021.07.31 |
[swift] loading view ๊ฐ๋ฐ - activity indicator (0) | 2021.07.31 |
[swift] debugging์ ์ํด view์์ print๋ฌธ ์ฐ๋๋ฒ (0) | 2021.07.31 |
[swift] @State, @ObservedObject, @EnvironmentObject ์ฐจ์ด!! (+@Binding) (0) | 2021.07.31 |
[swift] textfield placeholder์ ์๊น ๋ฃ๊ธฐ (0) | 2021.07.31 |
[swift] keyboard๋ฐ๋ผ ๊ฐ์ด ์ฌ๋ผ๊ฐ๋ view ๋ฌธ์ (disable move up with keyboard) (0) | 2021.07.08 |