UITextField 及键盘缓存

一、UITextFielddelegate

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{  
    //返回一个BOOL值,指定是否循序文本字段开始编辑  
    return YES;  
}  
 
- (void)textFieldDidBeginEditing:(UITextField *)textField{
    //开始编辑时触发,文本字段将成为first responder
}
 
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField{
    //返回BOOL值,指定是否允许文本字段结束编辑,当编辑结束,文本字段会让出first responder
    //要想在用户结束编辑时阻止文本字段消失,可以返回NO
    //这对一些文本字段必须始终保持活跃状态的程序很有用,比如即时消息
    return NO;
}
 
- (BOOL)textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
    //当用户使用自动更正功能,把输入的文字修改为推荐的文字时,就会调用这个方法。
    //这对于想要加入撤销选项的应用程序特别有用
    //可以跟踪字段内所做的最后一次修改,也可以对所有编辑做日志记录,用作审计用途。   
    //要防止文字被改变可以返回NO
    //这个方法的参数中有一个NSRange对象,指明了被改变文字的位置,建议修改的文本也在其中
    return YES;
}
- (BOOL)textFieldShouldClear:(UITextField *)textField{
    //返回一个BOOL值指明是否允许根据用户请求清除内容
    //可以设置在特定条件下才允许清除内容
    return YES;
}
-(BOOL)textFieldShouldReturn:(UITextField *)textField{
    //返回一个BOOL值,指明是否允许在按下回车键时结束编辑
    //如果允许要调用resignFirstResponder 方法,这回导致结束编辑,而键盘会被收起
    [textField resignFirstResponder];//查一下resign这个单词的意思就明白这个方法了
    return YES;
}
 
iOS 中使用键盘类会导致数据被自动缓存。
如下除外:
1.密码框中的数据是不会缓存的。
2.全部由数字组成的字符串是不会被缓存的。
3.禁用文本框的自动更正功能可以防止数据被缓存,反之亦然。
// textField.autocorrctionType = UITextAutocorrectionTypeNo;
4.太短的一两个字的数据不会被缓存的。
 
除了文本输入以外,当把数据复制带iOS剪贴板时,数据也会以明文形式被缓存。
若要禁止就需要在文本框中添加如下的方法:
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender{
  UIMenuController *menuController = [UIMenuController shareMenuController];
  if(menuController){
    menuController.menuVisible = NO;
  }
  return NO;
}
 

  ----------     //在弹出的键盘上面加一个view来放置退出键盘的Done按钮

//        UIToolbar * topView = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, APP_WIDTH, 30)];

//        [topView setBarStyle:UIBarStyleDefault];

//        UIBarButtonItem * btnSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];

//        UIBarButtonItem * doneButton = [[UIBarButtonItem alloc] initWithTitle:@"完成" style:UIBarButtonItemStyleDone target:self action:@selector(dismissKeyBoard)];

//        NSArray * buttonsArray = [NSArray arrayWithObjects:btnSpace, doneButton, nil];

//        [topView setItems:buttonsArray];

//        [textView setInputAccessoryView:topView];

-----------------------------

posted on 2015-11-20 11:50  AN_绝非儿戏  阅读(418)  评论(0)    收藏  举报

导航