如何允许 uitextview 只接受退格键和删除键

Posted

技术标签:

【中文标题】如何允许 uitextview 只接受退格键和删除键【英文标题】:how to allow uitextview to accept only backspace and delete key 【发布时间】:2012-08-17 20:22:03 【问题描述】:

我希望 UItextView 在 TextView.contentSize.height 超过一定限制后不再接受任何字符。但可以删除内容。如何实现这一点。有什么建议吗??

【问题讨论】:

【参考方案1】:

使用文本字段和文本视图的委托和数据源。

下面的文本字段委托方法示例

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string if (textField == self.txtContact) 
            if ([DebugLog isEqualToString:@"1"]) 
                NSLog(@"%@",textField.text);
            
            char *x = (char*)[string UTF8String];
            if([string isEqualToString:@"-"] || [string isEqualToString:@"("] || [string isEqualToString:@")"] || [string isEqualToString:@"0"] || [string isEqualToString:@"1"] ||  [string isEqualToString:@"2"] ||  [string isEqualToString:@"3"] ||  [string isEqualToString:@"4"] ||  [string isEqualToString:@"5"] ||  [string isEqualToString:@"6"] ||  [string isEqualToString:@"7"] ||  [string isEqualToString:@"8"] ||  [string isEqualToString:@"9"] || x[0]==0 || [string isEqualToString:@" "]) 
                    if ([DebugLog isEqualToString:@"1"]) 
                        NSLog(@"%d",[string length]);
                    
                NSUInteger newLength = [textField.text length] + [string length];
                if (!CheckDigit) 
                    if ([textField.text length] == 4) 
                        textField.text =[NSString stringWithFormat:@"%@-",textField.text];
                        CheckDigit=TRUE;
                    


                
                if (!CheckDigit1) 
                    if ([textField.text length] == 9) 
                        textField.text =[NSString stringWithFormat:@"%@-",textField.text];
                        CheckDigit1=TRUE;
                    


                
                if ([textField.text length]<=4 ) 
                    CheckDigit=FALSE;
                
                if ([textField.text length]<=9 && [textField.text length]>=4 ) 
                    CheckDigit1=FALSE;
                

                return (newLength >  11) ? NO : YES;

             else 
                return NO;
            


【讨论】:

【参考方案2】:

看看UITextFieldDelegate 协议。- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 是你的朋友。

【讨论】:

【参考方案3】:

用户跟随委托方法以避免用户输入任何内容

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
  

   return 0;/// Dont allow user to type

return 1; ///Allow user to type

  

【讨论】:

以上是关于如何允许 uitextview 只接受退格键和删除键的主要内容,如果未能解决你的问题,请参考以下文章

python退格键和箭头无法正常使用

解决Ubuntu中vi命令的编辑模式下不能正常使用方向键和退格键的问题

解决vi编辑器不能使用方向键和退格键问题

解决Ubuntu14.04下vi编辑器不能使用方向键和退格键问题

delphi中如何让文本框只输入数字、减号、小数点、汉字和退格键

如何连续删除键盘退格键上的字符长按android