Skip to content

Commit 779203e

Browse files
authored
Merge pull request #256 from teamterning/Fix/#254-공고상세_복사드래그_가능하게하기
[Fix] #254 - 공고 상세에서 복사 붙여넣기 기능이 되게 수정 했습니다. | v1.1.2 버전 업데이트
2 parents 95f341e + abaf90e commit 779203e

File tree

6 files changed

+86
-19
lines changed

6 files changed

+86
-19
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
# 👔 terning 터닝 - 대학생 인턴, 공고 관리 캘린더
55

6-
## 앱스토어 링크 : [앱스토어](https://apps.apple.com/kr/app/terning-%ED%84%B0%EB%8B%9D-%EB%8C%80%ED%95%99%EC%83%9D-%EC%9D%B8%ED%84%B4-%EA%B3%B5%EA%B3%A0-%EA%B4%80%EB%A6%AC-%EC%BA%98%EB%A6%B0%EB%8D%94/id6547866420) v1.1.1
6+
## 앱스토어 링크 : [앱스토어](https://apps.apple.com/kr/app/terning-%ED%84%B0%EB%8B%9D-%EB%8C%80%ED%95%99%EC%83%9D-%EC%9D%B8%ED%84%B4-%EA%B3%B5%EA%B3%A0-%EA%B4%80%EB%A6%AC-%EC%BA%98%EB%A6%B0%EB%8D%94/id6547866420) v1.1.2
77
<p align="left"><img width="900" src="https://github.com/user-attachments/assets/984e7795-3746-4e7a-ad6c-cb1cb376c481"></p>
88

99
**내 계획에 딱 맞는 대학생 인턴의 시작, 터닝**

Terning-iOS/Terning-iOS.xcodeproj/project.pbxproj

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,8 @@
8989
2DF257252C8F691300B85843 /* ProfileFixViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DF257242C8F691300B85843 /* ProfileFixViewModel.swift */; };
9090
2DF257272C8F692B00B85843 /* ProfileViewModelType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DF257262C8F692B00B85843 /* ProfileViewModelType.swift */; };
9191
2DF257292C8F6A7D00B85843 /* ProfileImageUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DF257282C8F6A7D00B85843 /* ProfileImageUtils.swift */; };
92+
710660372D53B0B70065167A /* TextViewFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 710660362D53B0B70065167A /* TextViewFactory.swift */; };
93+
710660392D53B2510065167A /* UITextView+.swift in Sources */ = {isa = PBXBuildFile; fileRef = 710660382D53B2510065167A /* UITextView+.swift */; };
9294
7119B8112CA72FBD00E94E62 /* UIColor+.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7119B8102CA72FBD00E94E62 /* UIColor+.swift */; };
9395
7121A1332C396FB40056DB8B /* CustomButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7121A1322C396FB40056DB8B /* CustomButton.swift */; };
9496
7121A1352C39CCF60056DB8B /* UIButton+.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7121A1342C39CCF60056DB8B /* UIButton+.swift */; };
@@ -275,6 +277,8 @@
275277
2DF257242C8F691300B85843 /* ProfileFixViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileFixViewModel.swift; sourceTree = "<group>"; };
276278
2DF257262C8F692B00B85843 /* ProfileViewModelType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileViewModelType.swift; sourceTree = "<group>"; };
277279
2DF257282C8F6A7D00B85843 /* ProfileImageUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileImageUtils.swift; sourceTree = "<group>"; };
280+
710660362D53B0B70065167A /* TextViewFactory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextViewFactory.swift; sourceTree = "<group>"; };
281+
710660382D53B2510065167A /* UITextView+.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UITextView+.swift"; sourceTree = "<group>"; };
278282
7119B8102CA72FBD00E94E62 /* UIColor+.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIColor+.swift"; sourceTree = "<group>"; };
279283
7121A1322C396FB40056DB8B /* CustomButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomButton.swift; sourceTree = "<group>"; };
280284
7121A1342C39CCF60056DB8B /* UIButton+.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIButton+.swift"; sourceTree = "<group>"; };
@@ -1005,6 +1009,7 @@
10051009
71461ED52C38150C002A6999 /* UILabel+.swift */,
10061010
7121A1342C39CCF60056DB8B /* UIButton+.swift */,
10071011
7119B8102CA72FBD00E94E62 /* UIColor+.swift */,
1012+
710660382D53B2510065167A /* UITextView+.swift */,
10081013
);
10091014
path = "UIKit+";
10101015
sourceTree = "<group>";
@@ -1371,6 +1376,7 @@
13711376
71B5092E2C432F90006D8E56 /* ViewControllerUtils.swift */,
13721377
71780C3D2C45849A0073B731 /* UserDefaultWrapper.swift */,
13731378
2DF257282C8F6A7D00B85843 /* ProfileImageUtils.swift */,
1379+
710660362D53B0B70065167A /* TextViewFactory.swift */,
13741380
);
13751381
path = Utils;
13761382
sourceTree = "<group>";
@@ -1657,8 +1663,10 @@
16571663
71CCC0792C3FDABF00789A9B /* TNCalendarViewModel.swift in Sources */,
16581664
71F004C52C956C9700CD202B /* CalendarAnnouncementModel.swift in Sources */,
16591665
2DD4DC912D1F80590036D08D /* FiltersRepository.swift in Sources */,
1666+
710660372D53B0B70065167A /* TextViewFactory.swift in Sources */,
16601667
2D8D0D412C492B8C00ECB36F /* SearchResultModel.swift in Sources */,
16611668
71CCC0732C3F36EA00789A9B /* TNCalendarView.swift in Sources */,
1669+
710660392D53B2510065167A /* UITextView+.swift in Sources */,
16621670
2DC986082C45FAC200D46729 /* CustomPageControl.swift in Sources */,
16631671
71CCC07C2C3FDB0400789A9B /* ViewModelType.swift in Sources */,
16641672
71FFB2B82C48286300C60697 /* SplashViewController.swift in Sources */,
@@ -1914,7 +1922,7 @@
19141922
CODE_SIGN_ENTITLEMENTS = "Terning-iOS/Terning-iOS.entitlements";
19151923
CODE_SIGN_IDENTITY = "Apple Development";
19161924
CODE_SIGN_STYLE = Automatic;
1917-
CURRENT_PROJECT_VERSION = 2025.0203.2314;
1925+
CURRENT_PROJECT_VERSION = 2025.0216.2221;
19181926
DEVELOPMENT_TEAM = 8Q4H7X3Q58;
19191927
ENABLE_USER_SCRIPT_SANDBOXING = NO;
19201928
GENERATE_INFOPLIST_FILE = YES;
@@ -1931,7 +1939,7 @@
19311939
"$(inherited)",
19321940
"@executable_path/Frameworks",
19331941
);
1934-
MARKETING_VERSION = 1.1.1;
1942+
MARKETING_VERSION = 1.1.2;
19351943
OTHER_LDFLAGS = (
19361944
"-Xlinker",
19371945
"-interposable",
@@ -1958,7 +1966,7 @@
19581966
CODE_SIGN_ENTITLEMENTS = "Terning-iOS/Terning-iOS.entitlements";
19591967
CODE_SIGN_IDENTITY = "Apple Development";
19601968
CODE_SIGN_STYLE = Automatic;
1961-
CURRENT_PROJECT_VERSION = 2025.0203.2314;
1969+
CURRENT_PROJECT_VERSION = 2025.0216.2221;
19621970
DEVELOPMENT_TEAM = 8Q4H7X3Q58;
19631971
ENABLE_USER_SCRIPT_SANDBOXING = NO;
19641972
GENERATE_INFOPLIST_FILE = YES;
@@ -1975,7 +1983,7 @@
19751983
"$(inherited)",
19761984
"@executable_path/Frameworks",
19771985
);
1978-
MARKETING_VERSION = 1.1.1;
1986+
MARKETING_VERSION = 1.1.2;
19791987
PRODUCT_BUNDLE_IDENTIFIER = "com.terning.Terning-iOS";
19801988
PRODUCT_NAME = "$(TARGET_NAME)";
19811989
PROVISIONING_PROFILE_SPECIFIER = "";

Terning-iOS/Terning-iOS/Info.plist

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,6 @@
44
<dict>
55
<key>CFBundleIconName</key>
66
<string>AppIcon</string>
7-
<key>CFBundleDisplayName</key>
8-
<string>terning</string>
9-
<key>CFBundleShortVersionString</key>
10-
<string>1.1.1</string>
11-
<key>CFBundleVersion</key>
12-
<string>2025.0203.2314</string>
13-
<key>CFBundleName</key>
14-
<string>$(PRODUCT_NAME)</string>
157
<key>CFBundleURLTypes</key>
168
<array>
179
<dict>
@@ -23,6 +15,8 @@
2315
</array>
2416
</dict>
2517
</array>
18+
<key>ITSAppUsesNonExemptEncryption</key>
19+
<false/>
2620
<key>KAKAO_NATIVE_APP_KEY</key>
2721
<string>$(KAKAO_NATIVE_APP_KEY)</string>
2822
<key>LSApplicationQueriesSchemes</key>
@@ -36,8 +30,6 @@
3630
<key>NSAllowsArbitraryLoads</key>
3731
<true/>
3832
</dict>
39-
<key>ITSAppUsesNonExemptEncryption</key>
40-
<false/>
4133
<key>UIAppFonts</key>
4234
<array>
4335
<string>Pretendard-Light.otf</string>
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
//
2+
// UITextView+.swift
3+
// Terning-iOS
4+
//
5+
// Created by 이명진 on 2/5/25.
6+
//
7+
8+
import UIKit
9+
10+
extension UITextView {
11+
func setTextViewLineSpacing(lineSpacing: CGFloat) {
12+
guard let text = self.text else { return }
13+
let attributedStr = NSMutableAttributedString(string: text)
14+
let style = NSMutableParagraphStyle()
15+
style.lineSpacing = lineSpacing
16+
attributedStr.addAttribute(.paragraphStyle, value: style, range: NSMakeRange(0, attributedStr.length))
17+
self.attributedText = attributedStr
18+
}
19+
20+
func setTextViewCharacterSpacing(_ spacing: CGFloat) {
21+
guard let text = self.text else { return }
22+
let attributedStr = NSMutableAttributedString(string: text, attributes: [.kern: spacing])
23+
self.attributedText = attributedStr
24+
}
25+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
//
2+
// TextViewFactory.swift
3+
// Terning-iOS
4+
//
5+
// Created by 이명진 on 2/5/25.
6+
//
7+
8+
import UIKit
9+
10+
struct TextViewFactory {
11+
/// - Parameters:
12+
/// - text: TextView에 보여줄 텍스트
13+
/// - font: 텍스트의 폰트
14+
/// - backgroundColor: TextView의 배경색
15+
/// - textColor: text 색상
16+
/// - textAlignment: text 정렬
17+
/// - lineSpacing: 행간 (default = 1.3 (130%))
18+
/// - characterSpacing: 자간 (default = -0.5 (-0.005))
19+
///
20+
static func build(
21+
text: String? = "",
22+
font: UIFont,
23+
backgroundColor: UIColor = .clear,
24+
textColor: UIColor = .terningBlack,
25+
textAlignment: NSTextAlignment = .center,
26+
lineSpacing: CGFloat = 1.3,
27+
characterSpacing: CGFloat = -0.005
28+
) -> UITextView {
29+
let textView = UITextView()
30+
textView.text = text
31+
textView.font = font
32+
textView.backgroundColor = backgroundColor
33+
textView.textColor = textColor
34+
textView.textAlignment = textAlignment
35+
textView.setTextViewLineSpacing(lineSpacing: lineSpacing)
36+
textView.setTextViewCharacterSpacing(characterSpacing)
37+
return textView
38+
}
39+
}

Terning-iOS/Terning-iOS/Source/Presentation/JobDetail/Cell/DetailInfoTableViewCell.swift

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,23 @@
88
import UIKit
99

1010
import SnapKit
11+
import Then
1112

1213
final class DetailInfoTableViewCell: UITableViewCell {
1314

1415
// MARK: - UI Components
1516

16-
private let datailDescriptionLabel = LabelFactory.build(
17-
text: "상세 정보입니다.",
17+
private let datailDescriptionLabel = TextViewFactory.build(
18+
text: "",
1819
font: .detail1,
1920
textColor: .grey400,
2021
textAlignment: .left,
2122
lineSpacing: 1.2,
2223
characterSpacing: 0.002
2324
).then {
24-
$0.numberOfLines = 0
25+
$0.isEditable = false
26+
$0.isScrollEnabled = false
27+
$0.dataDetectorTypes = [.link]
2528
}
2629

2730
// MARK: - Init
@@ -42,7 +45,7 @@ final class DetailInfoTableViewCell: UITableViewCell {
4245

4346
extension DetailInfoTableViewCell {
4447
private func setUI() {
45-
self.addSubview(datailDescriptionLabel)
48+
contentView.addSubview(datailDescriptionLabel)
4649
}
4750
private func setLayout() {
4851
datailDescriptionLabel.snp.makeConstraints {

0 commit comments

Comments
 (0)