我现在正在编写一个有3 UITextField
s的简单应用程序,如果我编辑一个,其他两个应该与它一起缩放。
我尝试使用
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
这种方法,但是:
如果我可以“修复”第一点(通过发送
[NSString stringWithFormat:@"%@%@", [textField text], string];
作为参数),它不会“修复”第二个点,因为string
变量是:
(lldb) po string
(NSString *) $1 = 0x0080cf14 <object returned empty description>
所以问题是:是否有任何方法被称为AFTER textFieldShouldChangeCharactersInRange:
?或者有办法:
textFieldShouldChangeCharactersInRange:
方法UITextField
s?修改
我可以使用以下内容:
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
[self performSelector:@selector(myMethod:) withObject:textField afterDelay:0.1];
return YES;
}
但它似乎不是最安全的解决方案
答案 0 :(得分:2)
退格键使用空字符串修改NSRange。您可以做的是修改textField:shouldChange中的三个文本字段,然后将NO返回给方法。
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
textField.text = [textField.text stringByReplacingCharactersInRange:range withString:string]; // this is what will happen if you return yes to this method
anotherTextField.text = // do whatever u need
yetAnotherTextField.text = // do whatever u need
return NO;
}
答案 1 :(得分:0)
对于textFields:
[yourtextField addTarget:self action:@selector(textFieldDidChange) forControlEvents:UIControlEventEditingChanged];
-(void)textFieldDidChange
{
//Your Code
}
答案 2 :(得分:0)
以下代码正确打印文本视图的全文(插入了最后一个字符),这有用吗?
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if ([string length])
NSLog(@"Current Text:%@", [textField.text stringByAppendingString:string]);
else
NSLog(@"Current Text:%@", [textField.text substringWithRange:(NSRange){0, [textField.text length]-1}]);
return YES;
}
退格只是在string
参数中发送一个空字符串。