如果我复制abc 123
并将其粘贴到我的UITextField
,我希望输入abc123
。我正在尝试使用shouldChangeCharactersInRange:replacementString
中的UITextFieldDelegate
,但更改replacementString
参数不会改变字段中实际显示的内容。
如果字符串包含空格,我可以返回NO
,但我想要做的是在入口处实际删除它们。似乎没有任何其他委托方法来执行此操作。
我如何实现这一目标,最好不要继承UITextField
并覆盖paste:
?
答案 0 :(得分:2)
您可以观察UIPasteBoard的更改并在粘贴之前更改字符串:
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(pasteboardChangedNotification:)
收到通知后,您就可以获取字符串并替换空格。
NSString *newString = [[[UIPasteboard generalPasteboard] string] stringByReplacingOccuranciesOfString:@" " withSting:@""]
答案 1 :(得分:0)
您需要从replacementString中删除空格,然后将UITextField的text属性设置为修改后的replacementString并返回NO(因为您已经手动完成)。
答案 2 :(得分:0)
我可以实现这个行为覆盖textField:shouldChangeCharactersInRange:replacementString:在方法内部对textField进行更改(将文本设置为格式化版本)并返回NO。