A UITextField有一个委托方法调用应该更改范围内的字符,这个方法基本上问,我应该添加还是删除下一个字符?从中你可以决定你想要什么.这是一些示例代码.
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
BOOL shouldChangeCharacters = ( (textField.text.length + string.length) > 1 );
return shouldChangeCharacters;
}
Run Code Online (Sandbox Code Playgroud)
此代码表示如果添加的新字符加上当前文本大于1,则可以进行更改,如果文本不大于1,则我们不会进行更改...
现在,假设某人可能会尝试粘贴您的角色,仍会调用此委托方法,但您必须执行一些操作.
if (range.location == 0) {
NSString* firstCharacter = [string substringToIndex:1];
BOOL firstCharacterIsDesiredCharacter = [firstCharacter isEqualToString:@"#"];
if ( !firstCharacterIsDesiredCharacter ) {
NSString* symbolWithText = [NSString stringWithFormat:@"#%@",text];
// ******************** \\
[textView setText:symbolWithText];
return NO;
// or we could do this
string = symbolWithText;
// ******************** \\
}
}
Run Code Online (Sandbox Code Playgroud)
这两种情况都在修改参数的值......有些人不喜欢这样做.这可能是一个糟糕的编程习惯..或者如果你要修改它们,你应该先做一些过程.
有了它,我们只需要运行这个代码,如果他们试图替换第一个字符,我替换哈希标记符号,第一个字符是从位置0和长度1的范围.所以如果范围等于0 ,然后我们运行我们的代码来修复它.此代码还考虑到它们可能会粘贴特殊符号.因此,如果UITextField读取#work,并且他们试图复制"work"或"#work",则需要考虑这两种情况,如果哈希标记是第一个字符,则完全跳过代码.
| 归档时间: |
|
| 查看次数: |
1579 次 |
| 最近记录: |