一.判断正在编辑的UITextField或UITextView的内容是否为空,以此来控制button的点亮状态
#pragma mark- UITextFieldDelegate
- (BOOL)textField:(UITextField*)textField shouldChangeCharactersIn Range:(NSRange)rangereplacementString:(NSString*)string
{
NSMutableString* changedString=[[NSMutableStringalloc]initWithString:textField.text];
[changedStringreplaceCharactersInRange :rangewithString:string];
if(changedString.length!=0){
self.navigationItem.rightBarButtonItem.enabled=YES;
}else{
self.navigationItem.rightBarButtonItem.enabled=NO;
}
return YES;
}
#pragma mark- UITextViewDelegate
- (BOOL)textView:(UITextView*)textView shouldChangeTextInRange:(NSRange)rangereplacementText:(NSString*)text
{
NSMutableString* changedString=[[NSMutableStringalloc]initWithString:textView.text];
[changedStringreplaceCharactersInRange :rangewithString:text];
if(changedString.length!=0){
self.navigationItem.rightBarButtonItem.enabled=YES;
}else{
self.navigationItem.rightBarButtonItem.enabled=NO;
}
return YES;
}
二.解决退格键一次清处所有的问题
#pragma mark- UITextFieldDelegate
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if (range.location > 0 && range.length == 1 && string.length == 0)
{
//存储光标位置
UITextPosition *beginning = textField.beginningOfDocument;
UITextPosition *start = [textField positionFromPosition:beginning offset:range.location];
NSInteger cursorOffset = [textField offsetFromPosition:beginning toPosition:start] + string.length;
//保存当前文本,以防iOS删除整个文本
NSString *text = textField.text;
//触发删除
[textField deleteBackward];
//iOS删除整个字符串
if (textField.text.length != text.length - 1)
{
textField.text = [text stringByReplacingCharactersInRange:range withString:string];
//更新光标位置
UITextPosition *newCursorPosition = [textField positionFromPosition:textField.beginningOfDocument offset:cursorOffset];
UITextRange *newSelectedRange = [textField textRangeFromPosition:newCursorPosition toPosition:newCursorPosition];
[textField setSelectedTextRange:newSelectedRange];
}
return NO;
}
return YES;
}