我希望能够在我的文本框中写出拉丁文大写字母和一些符号。这是我的代码
let apostropheCharacterSet = CharacterSet(charactersIn: "'")
let characterSet = CharacterSet(charactersIn: "-/")
.union(.latinUppercaseLetters)
.union(apostropheCharacterSet)
.union(.whitespaces)
textValidator = CharacterSetTextValidator(set: characterSet)
但是当我输入“‘”时,我不能在它之后输入任何东西(无论是模拟器还是真实设备)。它只发生在这个符号(我已经和其他符号核对过了)。“:”、“^”等)我想看到的结果是:我可以在“‘”符号之后继续打字。拿“MC‘Donald”为例
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
你的代码片段展示了你正在使用Swift语言来创建一个自定义的字符验证器,用于限制文本框(UITextField或UITextView)中允许输入的字符类型。你希望允许拉丁文大写字母、破折号、正斜杠、单引号、空白字符以及其他一些符号,并且能够连续输入这些字符,但在实际操作中发现,在输入单引号(')之后无法继续输入其他字符。
这个问题可能是由于iOS的文本输入处理机制导致的。当用户在单引号后直接尝试输入时,系统可能将其解释为关闭了一个引用,尤其是如果自动智能引号功能开启的话,它可能会自动添加一个闭合的单引号并阻止进一步的输入直到用户完成这个“引号对”。
要解决这个问题,你可以尝试以下方法:
yourTextField.autocorrectionType = .no
yourTextField.smartQuotesType = .no
调整CharacterSet:尽管你的characterSet
已经包含了单引号,但为了确保它不影响后续输入,可以尝试明确地允许所有标点符号或特定的额外字符集,以避免任何意外的输入限制。
自定义InputDelegate:如果你需要更细粒度的控制,可以考虑实现UITextFieldDelegate或UITextViewDelegate中的相关方法,比如shouldChangeCharactersIn
,在这里你可以根据自己的逻辑决定何时允许输入哪些字符。
检查键盘类型:确认你的键盘类型是否适合输入这类特殊字符,有时候不同的键盘布局会影响输入行为。
综上所述,首先尝试禁用自动更正和智能引号功能应该能直接解决你的问题。如果问题依旧,再逐步尝试其他方案。