![]() |
1
10
我可以通过遵循uitextViewDelegate协议中的textViewDidChange:方法来限制输入和粘贴的文本。
但我仍然认为这是一种丑陋的黑客行为,苹果似乎应该提供uitextfields和uitextviews的某种“maxlength”属性。 如果有人知道更好的解决方案,请告诉我。 |
![]() |
2
7
以我刚刚实施委托方法的经验:
可用于粘贴。整个粘贴的字符串出现在replacementstring:参数中。只需检查它的长度,如果它比您的最大长度长,那么只需从这个委托方法返回no。这不会导致粘贴任何内容。或者,您可以像前面建议的答案那样对其进行子串,但如果太长(如果这是您想要的),则这可以完全防止粘贴。 |
![]() |
3
6
在textViewDidChange中插入文本后更改文本:如果用户在粘贴后按“撤消”,则会导致应用程序崩溃。 我玩了很久,终于找到了一个可行的解决方案。基本上,逻辑是,如果总长度大于最大字符数,则不允许粘贴,检测溢出的数量并仅插入部分字符串。 使用此解决方案,粘贴板和撤消管理器将按预期工作。
|
![]() |
4
0
上面链接到的第一个问题中的一个答案应该有效,即使用类似于
监视uitextfield中文本的更改并在适当时缩短它。 |
![]() |
5
0
另外,字符串长度(如'[string length]'中的字符串长度)是一回事,但通常需要在特定编码中将其截断为字节数。我需要将输入和粘贴到uitextview中的操作截断为最大utf8计数,下面是我的操作方法。(对读者来说,为uitextfield做类似的事情是一项练习。) nsstring+trunceutf8.h
nsstring+trunceutf8.m
我的视图控制器.m
|
![]() |
6
0
如果你检查一下
|
![]() |
7
0
此代码不允许用户输入超过maxcharacters的字符。 如果粘贴的文本超过此限制,则“粘贴”命令将不起任何作用。
|
![]() |
8
-1
|