Skip to content

Instantly share code, notes, and snippets.

View jeung-dev's full-sized avatar
๐Ÿ˜ƒ

์•ˆ์ •์€ jeung-dev

๐Ÿ˜ƒ
  • Incheon of Korea
View GitHub Profile
@jeung-dev
jeung-dev / LimitTextCountAndPaste.swift
Created October 11, 2021 08:18
TextView์— ๊ธ€์ž์ˆ˜ ์ œํ•œ์„ ๊ฑด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ถ™์—ฌ๋„ฃ๊ธฐ ํ•  ๋•Œ ๊ธ€์ž์ˆ˜ ์ œํ•œ์— ๊ฑธ๋ฆฌ๋ฉด ๊ฑธ๋ฆฐ๋งŒํผ ์ œ๊ฑฐํ•˜๊ณ  ๊ฐ€๋Šฅํ•œ ๋งŒํผ๋งŒ ๋ถ™์—ฌ์ง€๋„๋ก ํ•œ๋‹ค. ์ค‘๊ฐ„์‚ฝ์ž…๋„ ์ •์ƒ์ž‘๋™. ๋งˆ์ง€๋ง‰ ๊ธ€์ž์ˆ˜๋Š” ํ•œ๊ธ€์ด๋ผ์„œ +1์„ ํ•ด์„œ ์ž์Œ์ด๋‚˜ ๋ฐ›์ž„์„ ๋„ฃ์„ ์ˆ˜ ์žˆ๊ฒŒ ํ–ˆ๊ณ  textViewDidEndEditing ๋ฉ”์„œ๋“œ์—์„œ ์ œํ•œ ๊ธ€์ž์ˆ˜๊นŒ์ง€๋งŒ ๋ณด์ด๋„๋ก ์ดˆ๊ณผ๋œ ๊ธ€์ž๋ฅผ ์ง€์šฐ๋„๋ก ํ–ˆ์Œ.
func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
//์ด์ „ ๊ธ€์ž - ์„ ํƒ๋œ ๊ธ€์ž + ์ƒˆ๋กœ์šด ๊ธ€์ž(๋Œ€์ฒด๋  ๊ธ€์ž)
let newLength = textView.text.count - range.length + text.count
let koreanMaxCount = maxCount + 1
//๊ธ€์ž์ˆ˜๊ฐ€ ์ดˆ๊ณผ ๋œ ๊ฒฝ์šฐ or ์ดˆ๊ณผ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ
if newLength > koreanMaxCount { //11๊ธ€์ž
let overflow = newLength - koreanMaxCount //์ดˆ๊ณผ๋œ ๊ธ€์ž์ˆ˜
if text.count < overflow {
return true
}
@jeung-dev
jeung-dev / LimitTextCount.swift
Created October 11, 2021 04:59
Just ๊ธ€์ž์ˆ˜ ์ œํ•œ - ์ด ์ž‘์—…๋งŒ ํ•˜๋ฉด ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Œ. ๋ธ”๋กœ๊ทธ ์ฃผ์†Œ ์ฐธ๊ณ . https://doorganizedcoding.tistory.com
func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
let newLength = textView.text.count - range.length + text.count
if newLength > maxCount {
return false
}
return true
}
@jeung-dev
jeung-dev / limitedTextView.swift
Created October 10, 2021 16:39
TextView์˜ ๊ธ€์ž์ˆ˜ ์ œํ•œ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์ ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ํ‚ค๋ณด๋“œ๋กœ ์ž…๋ ฅ์„ ๋๋ƒˆ์„ ๋•Œ ์ œํ•œ์ˆ˜๋ฅผ ๋„˜๋Š” ๊ธ€์ž๋ฅผ ์‚ญ์ œํ•˜๋Š” ์ฝ”๋“œ
func textViewDidEndEditing(_ textView: UITextView) {
if textView.text.isEmpty {
textView.text = "์˜๊ฒฌ์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”. (์ตœ์†Œ 10์ž, ์ตœ๋Œ€ 1000์ž)"
textView.textColor = UIColor.lightGray
}
if textView.text.count > textViewMaximumCount {
textView.text.removeLast()
textViewTextNumLabel.text = "\(textViewMaximumCount)"
}
}
@jeung-dev
jeung-dev / StrangeTextViewLimitTextCount.swift
Created October 10, 2021 16:30
์ด์ƒํ˜„์ƒ์ด ์ผ์–ด๋‚˜๋Š” ๊ธ€์ž์ˆ˜ ์ œํ•œ1
func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
guard let str = textView.text else {return true}
let newLength = str.count + text.count - range.length
return newLength <= textViewMaximumCount + 1
}
func textViewDidChange(_ textView: UITextView) {
guard let text = textView.text else { return }
let num: Int = text.count
@jeung-dev
jeung-dev / GetKeyboardFrameAndDoSomthing.swift
Created October 10, 2021 15:53
ํ‚ค๋ณด๋“œ๊ฐ€ ์˜ฌ๋ผ์˜ค๊ฑฐ๋‚˜ ๋‚ด๋ ค์˜ฌ ๋•Œ ํ•ด๋‹น ํ™”๋ฉด์˜ scroll ์œ„์น˜์™€ ์ตœํ•˜๋‹จ constraint๋ฅผ ๋Š˜๋ ค์„œ ํ‚ค๋ณด๋“œ๊ฐ€ ์˜ฌ๋ผ์™€ ์žˆ๋Š” ์ƒํƒœ์—์„œ๋„ ์ตœํ•˜๋‹จ๊นŒ์ง€ ์Šคํฌ๋กค ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•˜๋Š” ์ฝ”๋“œ
@objc func keyboardWillShow(_ notification: Notification?)
{
//ํ‚ค๋ณด๋“œ frame ๋ฐ ํ‚ค๋ณด๋“œ๊ฐ€ ์˜ฌ๋ผ์˜จ ์ƒํƒœ์ธ์ง€ ์•„๋‹Œ์ง€ Bool ๊ฐ’ ๋ฐ›์•„์˜ค๊ธฐ
guard let info = notification?.userInfo else {
return
}
let frameEndUserInfoKey = UIResponder.keyboardFrameEndUserInfoKey
@jeung-dev
jeung-dev / KeyboardNotification.swift
Last active October 10, 2021 15:37
ํ‚ค๋ณด๋“œ๊ฐ€ ์˜ฌ๋ผ์™”์„ ๋•Œ์™€ ๋‚ด๋ ค์™”์„ ๋•Œ Notification
override func viewDidLoad()
{
super.viewDidLoad()
doSomething()
}
override func viewWillDisappear(_ animated: Bool)
{
super.viewWillDisappear(animated)
//ํ™”๋ฉด์ด ๋‚ด๋ ค๊ฐ€ ๋•Œ Notification ์‚ญ์ œ
@jeung-dev
jeung-dev / AddAccessoryView.swift
Last active October 10, 2021 15:20
ํ‚ค๋ณด๋“œ ์œ„์— accessory view ์ถ”๊ฐ€
func
let toolBarKeyboard = UIToolbar()
toolBarKeyboard.sizeToFit()
let btnDoneBar = UIBarButtonItem(title: "Done", style: .done, target: self, action: #selector(self.doneBtnTouched))
toolBarKeyboard.items = [btnDoneBar]
toolBarKeyboard.tintColor = .blue
self.textView.inputAccessoryView = toolBarKeyboard
@jeung-dev
jeung-dev / textViewPlaceholder.swift
Created October 10, 2021 14:56
UITextView์—์„œ placeholder๋ฅผ ์“ฐ๋Š” ์•ผ๋งค ๋ฐฉ๋ฒ•.
class NoticeBoardViewController: UIViewController
{
override func viewDidLoad()
{
super.viewDidLoad()
doSomething()
}
func doSomething()
{
@jeung-dev
jeung-dev / GetClickedTableViewCell.swift
Created October 8, 2021 17:54
ํ•˜๋‚˜์˜ TableViewCell์—์„œ ํด๋ฆญ๋œ ํ•ญ๋ชฉ์„ ์‹๋ณ„ํ•˜๋Š” ์ฝ”๋“œ
struct Home {
enum Category: String {
case KakaoLogin = "Kakao Login"
case RestfulApi = "get restfulAPI DATA"
case PopupVC = "Custom PopupViewController"
case KakaoMap = "Kakao Map"
case NoticeBoard = "Notice Borad"
}
}
@jeung-dev
jeung-dev / UsedSegueIdentifierWithTableView.swift
Last active October 8, 2021 17:48
Segue Identifier๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ TableViewCell์„ ํด๋ฆญํ–ˆ์„ ๋•Œ ๊ฐ ํ•ญ๋ชฉ์— ๋งž๋Š” ํ™”๋ฉด์œผ๋กœ ์ด๋™ ๋ถ„๊ธฐ
func tableView(_ tableView: UITableView, willSelectRowAt indexPath: IndexPath) -> IndexPath? {
//์„œ๋ธŒ๋ทฐ์— ํ•ด๋‹น ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ๋„˜๊ฒจ์ฃผ๊ธฐ ์œ„ํ•œ ์ž‘์—… (์ถ”ํ›„ router์—์„œ ์“ฐ์ž„)
let category = category[indexPath.row]
//๋‹ค์Œ ํ™”๋ฉด์ด ๋ฌด์—‡์ธ์ง€์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์ž‘์—…
switch category {
case .NoticeBoard: