TAG

RSS订阅

收藏本站

设为首页

当前位置:主页 > 移动开发 > IOS开发 >

iOS 的UITextField如何检测退格键清除所有字符?

发布时间:2015-03-03 16:33 类别:IOS开发

在iOS中6,如果您键入的文本到一个安全的文本字段中,更改到另一个文本字段,然后回到安全的文本字段,并创下退格,所有的字符都将被删除。我也好有这种情况发生,但是 CodeGo.net,我想启用/禁用的基础上的一个按钮,如果这个安全文本字段的字符与否。我知道如何确定哪些字符是在田间地头,如果退格被击中,但我无法确定如何检测,如果所有的字符结算正在发生的事情。 这是我'得到一个字段的新文本,但是,我似乎无法弄清楚如何获得新的文本(假定新的文本也只是一个空字符串),如果退格键被击中,清除所有的字符。
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
 //returns the "new text" of the field
 NSString * text = [textField.text stringByReplacingCharactersInRange:range withString:string];
}
任何帮助是非常赞赏。 谢谢!
本文地址 :CodeGo.net/583057/ 

1. 该溶液中。它并不需要正确的局部变量,并设置光标位置,删除字符后。 它是这个解决方案的混搭: 在的iOS 6的iOS 5的UITextField Backspace键的函数与“安全”属性 如何移动光标的UITextField设置其值后,
 
 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
 {
  if (range.location > 0 && range.length == 1 && string.length == 0)
  {
   // Stores cursor position
   UITextPosition *beginning = textField.beginningOfDocument;
   UITextPosition *start = [textField positionFromPosition:beginning offset:range.location];
   NSInteger cursorOffset = [textField offsetFromPosition:beginning toPosition:start] + string.length;
   // Save the current text, in case iOS deletes the whole text
   NSString *text = textField.text;
 
   // Trigger deletion
   [textField deleteBackward];
 
   // iOS deleted the entire string
   if (textField.text.length != text.length - 1)
   {
    textField.text = [text stringByReplacingCharactersInRange:range withString:string];
    // Update cursor position
    UITextPosition *newCursorPosition = [textField positionFromPosition:textField.beginningOfDocument offset:cursorOffset];
    UITextRange *newSelectedRange = [textField textRangeFromPosition:newCursorPosition toPosition:newCursorPosition];
    [textField setSelectedTextRange:newSelectedRange];
   }
   return NO;
  }
  return YES;
 }
 
2. 终于想通了任何人都希望看到如何确定何时退格键是要明确一个安全的UITextField的所有字符: UITextField的:
self.passwordTextField
私有财产(初始化为初始化否-可能不需要):
self.passwordFirstCharacterAfterDidBeginEditing
UITextFieldDelegate方法:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
 //if text is blank when first editing, then first delete is just a single space delete
 if([textField.text length] == 0 && self.passwordFirstCharacterAfterDidBeginEditing)
  self.passwordFirstCharacterAfterDidBeginEditing = NO;
 //if text is present when first editing, the first delete will result in clearing the entire password, even after typing text
 if([textField.text length] > 0 && self.passwordFirstCharacterAfterDidBeginEditing && [string length] == 0 && textField == self.passwordTextField)
 {
  NSLog(@"Deleting all characters");
  self.passwordFirstCharacterAfterDidBeginEditing = NO;
 }
 return YES;
}
-(void)textFieldDidBeginEditing:(UITextField *)textField
{
 if(textField == self.passwordTextField)
 {
  self.passwordFirstCharacterAfterDidBeginEditing = YES;
 }
}
我希望这有助于我也希望苹果刚刚创建时调用一个安全的文本字段被删除清除-这似乎是一个很大的,但它的工作原理。 
3. 安全的文本字段清楚开始编辑在iOS6的+,不管您要删除或输入文字的。检查如果字符串的长度为0的作品如果文本字段从一个退格清除,但烦人的范围和字符串textField:shouldChangeCharactersInRange:replacementString:是不正确的 CodeGo.net,如果输入文本时,文本将被清除。这是我的解决方案: 1)注册textFieldTextDidChange通知。
[[NSNotificationCenter defaultCenter] addObserver:self
           selector:@selector(textFieldTextDidChange:)
            name:UITextFieldTextDidChangeNotification
           object:nil];
2)重新调用textField:shouldChangeCharactersInRange:replacementString:如果文本字段是安全的,并可能已被清除。
- (void)textFieldTextDidChange:(NSNotification *)notification
{
 if (textField.secureTextEntry && textField.text.length <= 1) {
  [self.textField.delegate textField:self.textField
    shouldChangeCharactersInRange:NSMakeRange(0, textField.text.length)
       replacementString:textField.text];
 }
}
 
猜你会喜欢....

Copyright © 2015 www.wahenzan.com 哇!很赞 版权所有 浙ICP备14030256号-1 Power by DedeCms

浙公网安备 33010602005986号

声明:本站所有文章除标明原创外,均来自网络转载,版权归原作者所有,如果有侵犯到您的权益,请联系本站删除 网站管理员:758763728

360网站安全检测平台