반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- RxCocoa
- Xcode
- nonisolated
- swift6
- NullObject
- @EnvironmentObject
- subject
- Operators
- operator
- SWIFT
- IOS
- RFC1738/1808
- RxSwift
- typeorm
- @State
- graphql
- vim
- URL(string:)
- init
- dismiss
- SwiftUI
- NavigationLink
- nestjs
- ios14
- init?
- Operater
- Creating Operators
- @Binding
- @Environment
- Bug
Archives
- Today
- Total
Tunko Development Diary
[iOS][swift] UITextFile 이모티콘 입력 막기 (정규식 사용) 본문
// 정규식
extension String{
// 한글 숫자 영문 특수문자 포함 정규식 (이모티콘 제외)
func hasCharacters() -> Bool {
do {
let regex = try NSRegularExpression(pattern: "^[0-9a-zA-Z가-힣ㄱ-ㅎㅏ-ㅣ`~!@#$%^&*()\\-_=+\\[{\\]}\\\\|;:'\",<.>/?\\s]$", options: .caseInsensitive)
if let _ = regex.firstMatch(in: self, options: NSRegularExpression.MatchingOptions.reportCompletion, range: NSMakeRange(0, self.count)) {
return true
}
}catch {
return false
}
return false
}
}
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool
{
let utf8Char = string.cString(using: .utf8)
let isBackSpace = strcmp(utf8Char, "\\b")
if string.hasCharacters() || isBackSpace == -92 {
guard let textFieldText = textField.text,
let rangeOfTextToReplace = Range(range, in: textFieldText) else {
return false
}
var tcount : Int = 0
if string.count == 0
{
tcount = textField.text!.count - 1
}
else
{
tcount = textField.text!.count + string.count
}
setCommentWriteButtonState(textlanght: tcount)
let substringToReplace = textFieldText[rangeOfTextToReplace]
let count = textFieldText.count - substringToReplace.count + string.count
return count <= 300
}
return false
}
코드의 목적은 이모티콘입력을 받지 않는것이지만 이모티콘을 제한할 방법을 찾지 못했습니다.
편법을 사용했습니다.
정규식을 통해 입력 받을 문구를 정하고, 정규식에 포함되지 않은 문자열을 전부다 제외한다.
사실상 이모티콘을 감지하는것이 아닌 정규식으로 입력 받을 문자열을 나열했을 뿐 입니다.
"^[0-9a-zA-Z가-힣ㄱ-ㅎㅏ-ㅣ`~!@#$%^&*()\\-_=+\\[{\\]}\\\\|;:'\",<.>/?\\s]$",
반응형
'Development > iOS 개발' 카테고리의 다른 글
[iOS][swift]NavigattionBar 하단 라인 지우기 (0) | 2021.02.13 |
---|---|
[iOS][swift] App Version 가져오기 (0) | 2021.02.13 |
[iOS][swift] UITableViewCell 가변 높이 만들기 UILabel 활용 (0) | 2021.02.13 |
[iOS][swift] Xcode 프로젝트 커스텀 폰트 추가 및 사용 (0) | 2021.02.13 |
[iOS][Swift]네비게이션 이전 화면 버튼에 붙은 text 변경하기 (0) | 2021.02.13 |
Comments