Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
galaxy-iOS
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
mobile-group
galaxy-iOS
Commits
03559268
Commit
03559268
authored
Jul 07, 2024
by
David黄金龙
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
处理 文书的提交
parent
c9875046
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
181 additions
and
15 deletions
+181
-15
YHHKPlanItemView.swift
...tService(服务中心)/MyDocuments(我的文书)/V/YHHKPlanItemView.swift
+181
-15
No files found.
galaxy/galaxy/Classes/Modules/IntelligentService(服务中心)/MyDocuments(我的文书)/V/YHHKPlanItemView.swift
View file @
03559268
...
...
@@ -7,6 +7,7 @@
//
import
UIKit
import
SwifterSwift
class
YHHKPlanItemView
:
UIView
{
override
init
(
frame
:
CGRect
)
{
...
...
@@ -75,7 +76,12 @@ class YHHKPlanItemView: UIView {
//提示文字
var
tipsTxt
:
String
=
"请输入,300字内"
var
maxNumbler
:
Int
=
300
// var maxNumbler : Int = 300
var
maxNumbler
:
Int
=
300
{
didSet
{
tipsTxt
=
"请输入,"
+
maxNumbler
.
string
+
"字内"
}
}
//提示lable
private
lazy
var
tipsLable
:
UILabel
=
{
...
...
@@ -211,12 +217,16 @@ private extension YHHKPlanItemView {
if
model
.
type
==
.
planOther
{
maxNumbler
=
500
tipsTxt
=
"请输入,500字内"
tipsLable
.
text
=
tipsTxt
}
else
{
maxNumbler
=
300
maxNumbler
=
10
//for test hjl
}
tipsLable
.
text
=
tipsTxt
myTextView
.
text
=
getFuckString
(
string
:
model
.
content
)
numberLabel
.
text
=
myTextView
.
text
.
count
.
string
+
"/
\(
maxNumbler
)
"
if
myTextView
.
text
.
count
>
maxNumbler
{
let
textNum
=
calcTextLength
(
string
:
myTextView
.
text
)
numberLabel
.
text
=
textNum
.
string
+
"/
\(
maxNumbler
)
"
if
textNum
>
maxNumbler
{
numberLabel
.
textColor
=
.
failColor
}
else
{
numberLabel
.
textColor
=
UIColor
.
placeHolderColor
...
...
@@ -241,38 +251,194 @@ private extension YHHKPlanItemView {
}
}
func
calcTextLength
(
string
:
String
)
->
Int
{
if
string
.
isEmpty
{
return
0
}
/*
具体规则:
(1)仅计算中文/英文/数字,不计算标点等特殊字符。
(2)中文算一个字;
(3)连续的英文/数字记为一个字。
(4)空格不计入字数统计
(5)如果英文之间有空格或标点符号,例如“aaa aaaa”字数记为2;中英混杂分开计算,例如“aaa你好 你aaa”字数记为5;
(6)非中文、英文、数字的语言,例如日文,不计入字数统计。
(7)如果C端用户,在APP上输入的字数超过300个字符,则APP再传给后端时,进行截断后再发给后台
*/
var
isPreDone
:
Bool
=
true
//前一个字符已处理
let
stringLength
:
Int
=
string
.
unicodeScalars
.
count
var
totalNumber
:
Int
=
0
for
(
index
,
scalar
)
in
string
.
unicodeScalars
.
enumerated
()
{
if
scalar
.
value
>=
0x4E00
&&
scalar
.
value
<=
0x9FFF
{
// 中文字符的Unicode范围
if
isPreDone
==
false
{
totalNumber
=
totalNumber
+
1
}
totalNumber
=
totalNumber
+
1
isPreDone
=
true
}
else
if
scalar
.
isASCII
&&
(
scalar
>=
"a"
&&
scalar
<=
"z"
||
scalar
>=
"A"
&&
scalar
<=
"Z"
)
{
// 英文字符(不包括ASCII数字和标点符号)
isPreDone
=
false
}
else
if
scalar
.
isASCII
&&
(
scalar
>=
"0"
&&
scalar
<=
"9"
)
{
// 数字
isPreDone
=
false
}
else
{
if
isPreDone
==
false
{
totalNumber
=
totalNumber
+
1
}
isPreDone
=
true
}
if
index
==
stringLength
-
1
{
if
isPreDone
==
false
{
totalNumber
=
totalNumber
+
1
}
}
}
return
totalNumber
}
//获取固定长度的字符串
func
getFuckString
(
string
:
String
)
->
String
{
if
string
.
isEmpty
{
return
""
}
if
string
.
count
<=
maxNumbler
{
return
string
}
/*
具体规则:
(1)仅计算中文/英文/数字,不计算标点等特殊字符。
(2)中文算一个字;
(3)连续的英文/数字记为一个字。
(4)空格不计入字数统计
(5)如果英文之间有空格或标点符号,例如“aaa aaaa”字数记为2;中英混杂分开计算,例如“aaa你好 你aaa”字数记为5;
(6)非中文、英文、数字的语言,例如日文,不计入字数统计。
(7)如果C端用户,在APP上输入的字数超过300个字符,则APP再传给后端时,进行截断后再发给后台
*/
var
isPreDone
:
Bool
=
true
//前一个字符已处理
let
stringLength
:
Int
=
string
.
unicodeScalars
.
count
var
totalNumber
:
Int
=
0
var
returStrn
=
""
for
(
index
,
scalar
)
in
string
.
unicodeScalars
.
enumerated
()
{
if
scalar
.
value
>=
0x4E00
&&
scalar
.
value
<=
0x9FFF
{
// 中文字符的Unicode范围
if
isPreDone
==
false
{
totalNumber
=
totalNumber
+
1
}
totalNumber
=
totalNumber
+
1
isPreDone
=
true
if
totalNumber
<=
maxNumbler
{
returStrn
=
returStrn
+
String
(
scalar
)
}
else
{
return
returStrn
}
}
else
if
scalar
.
isASCII
&&
(
scalar
>=
"a"
&&
scalar
<=
"z"
||
scalar
>=
"A"
&&
scalar
<=
"Z"
)
{
// 英文字符(不包括ASCII数字和标点符号)
isPreDone
=
false
returStrn
=
returStrn
+
String
(
scalar
)
}
else
if
scalar
.
isASCII
&&
(
scalar
>=
"0"
&&
scalar
<=
"9"
)
{
// 数字
isPreDone
=
false
returStrn
=
returStrn
+
String
(
scalar
)
}
else
{
if
isPreDone
==
false
{
totalNumber
=
totalNumber
+
1
if
totalNumber
<=
maxNumbler
{
returStrn
=
returStrn
+
String
(
scalar
)
}
else
{
return
returStrn
}
}
isPreDone
=
true
}
if
index
==
stringLength
-
1
{
if
isPreDone
==
false
{
totalNumber
=
totalNumber
+
1
if
totalNumber
<=
maxNumbler
{
returStrn
=
returStrn
+
String
(
scalar
)
}
else
{
return
returStrn
}
}
}
}
return
returStrn
}
}
extension
YHHKPlanItemView
:
UITextViewDelegate
{
func
textView
(
_
textView
:
UITextView
,
shouldChangeTextIn
range
:
NSRange
,
replacementText
text
:
String
)
->
Bool
{
if
text
.
isEmpty
{
return
true
}
let
newLength
=
(
textView
.
text
as
NSString
)
.
length
+
text
.
count
-
range
.
length
var
newLength
=
(
textView
.
text
as
NSString
)
.
length
+
text
.
count
-
range
.
length
if
dataMode
?
.
type
==
.
planOther
{
return
newLength
<=
maxNumbler
}
else
{
newLength
=
calcTextLength
(
string
:
textView
.
text
)
}
return
newLength
<=
maxNumbler
return
newLength
<=
maxNumbler
-
1
}
func
textViewDidChange
(
_
textView
:
UITextView
)
{
guard
let
model
=
dataMode
else
{
return
}
guard
let
text
=
textView
.
text
else
{
return
}
model
.
content
=
text
// var number = 300
// if model.type == .planOther {
// number = maxNumbler
// }
var
txtNum
:
Int
=
0
if
model
.
type
==
.
planOther
{
numberLabel
.
text
=
myTextView
.
text
.
count
.
string
+
"/
\(
maxNumbler
)
"
txtNum
=
myTextView
.
text
.
count
numberLabel
.
text
=
txtNum
.
string
+
"/
\(
maxNumbler
)
"
model
.
content
=
text
}
else
{
txtNum
=
calcTextLength
(
string
:
text
)
numberLabel
.
text
=
txtNum
.
string
+
"/
\(
maxNumbler
)
"
//for test hjl
printLog
(
text
.
count
)
if
text
.
count
<=
maxNumbler
{
model
.
content
=
text
}
else
{
numberLabel
.
text
=
myTextView
.
text
.
count
.
string
+
"/
\(
maxNumbler
)
"
//for test hjl
var
ttt
=
text
let
subString
=
ttt
.
slice
(
from
:
0
,
length
:
maxNumbler
)
model
.
content
=
subString
}
}
if
myTextView
.
text
.
count
>
maxNumbler
{
if
txtNum
>
maxNumbler
{
numberLabel
.
textColor
=
.
failColor
}
else
{
numberLabel
.
textColor
=
UIColor
.
placeHolderColor
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment