开发者社区> 问答> 正文

关于键盘输入7次后UITextField崩溃

有一个UITextField,每次输入到第七次时,就会崩溃。而且没有什么信息在XCode中显示。我在iPad中运行:

App[12345] has active assertions beyond permitted time: 
{(
    <BKProcessAssertion: 0x1f5bf200> identifier: Suspending process: App[12345] permittedBackgroundDuration: 10.000000 reason: suspend owner pid:26 preventSuspend  preventThrottleDownCPU  preventThrottleDownUI 
)}

展开
收起
爵霸 2016-03-17 13:22:13 2666 0
1 条回答
写回答
取消 提交回答
  • 1.UITextField的初始化和设置  textField = [[UITextField alloc] initWithFrame:CGRectMake(120.0f, 80.0f, 150.0f, 30.0f)];  [textField setBorderStyle:UITextBorderStyleRoundedRect]; //外框类型   textField.placeholder = @"password"; //默认显示的字   textField.secureTextEntry = YES; //密码   textField.autocorrectionType = UITextAutocorrectionTypeNo;  textField.autocapitalizationType = UITextAutocapitalizationTypeNone;  textField.returnKeyType = UIReturnKeyDone;  textField.clearButtonMode = UITextFieldViewModeWhileEditing; //编辑时会出现个修改X   textField.delegate = self; 2.要实现的Delegate方法,关闭键盘  - (BOOL)textFieldShouldReturn:(UITextField *)textField  {  [self.textField resignFirstResponder];  return YES;  } 3. 可以在UITextField使用下面方法,按return键返回 -(IBAction) textFieldDone:(id) sender {  [textFieldName resignFirstResponder]; } 链接TextField控件的"Did end on exit" 最右侧加图片是以下代码,  UIImageView *imgv=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"right.png"]];  text.rightView=imgv;  text.rightViewMode = UITextFieldViewModeAlways;  如果是在最左侧加图片就换成: text.leftView=imgv; text.leftViewMode = UITextFieldViewModeAlways; UITextField 继承自 UIControl,此类中有一个属性contentVerticalAlignment 所以想让UITextField里面的text垂直居中可以这样写: text.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; 查看函数的方法: 按住command键双击进入函数声明 按住alt键双击进入doc文档 /////////////////////////////////////////////////////////////// 文本框常用方法: 如何用程序删除文本框中选中的文本 [textView delete: nil]; /////////////////////////////////////////////////////////////// 如何限制文本框只能输入数字: 建立NSNumberFormatter的子类,增加这个方法,将formatter链接至文本框。  - (BOOL) isPartialStringValid: (NSString **) partialStringPtr  proposedSelectedRange: (NSRangePointer) proposedSelRangePtr  originalString: (NSString *) origString  originalSelectedRange: (NSRange) origSelRange  errorDescription: (NSString **) error {  NSCharacterSet *nonDigits;  NSRange newStuff;  NSString *newStuffString;   nonDigits = [[NSCharacterSet decimalDigitCharacterSet] invertedSet];  newStuff = NSMakeRange(origSelRange.location,  proposedSelRangePtr->location  - origSelRange.location);  newStuffString = [*partialStringPtr substringWithRange: newStuff];   if ([newStuffString rangeOfCharacterFromSet: nonDigits  options: NSLiteralSearch].location != NSNotFound) {  *error = @"不是数字";  return (NO);  } else {  *error = nil;  return (YES);  }  } /////////////////////////////////////////////////////////////// 从文本框获取十六进制数据的代码 char singleNumberString[3] = {'\0','\0','\0'}; uint32_t singleNumber = 0; uint32_t i = 0;  NSMutableData *data = [NSMutableData data];  //从文本框获取到得数据  const char *buf = [[_hexToSendTextField text] UTF8String];  //转换为十六进制  for(i = 0; i < strlen(buf); i+=2)  {  if(((i+1) < len && isxdigit(buf) && (isxdigit(buf[i+1])))  {  singleNumberString[0] = buf;  singleNumberString[1] = buf[i+1];  sscanf(singleNumberString, "%x", &singleNumber);  [data appendBytes:(void*)(&tmp) length:1];  }  else  {  break;  }  }  //输出  NSLog(@"%@", data); ///////////////////////////////////////////////////////////// 点击 UITextView 输入文字,光标都从最初点开始 - (void)textViewDidChangeSelection:(UITextView *)textView {  NSRange range;  range.location = 0;  range.length = 0;  textView.selectedRange = range; } /////////////////////////////////////////////////////////// 软键盘 在登录页面要实现用户名和密码,密码要是点点格式,引入当前页面光标要停留在用户名选项,软键盘要弹出界面。如下图: 弹出键盘: [username becomeFirstResponder]; 取消键盘: [username resignFirstResponder]; 密码保护: password.secureTextEntry=YES; ////////////////////////////////////////////////////////////////// 1.UITextField的初始化和设置  textField = [[UITextField alloc] initWithFrame:CGRectMake(120.0f, 80.0f, 150.0f, 30.0f)];  [textField setBorderStyle:UITextBorderStyleRoundedRect]; //外框类型  textField.placeholder = @"password"; //默认显示的字  textField.secureTextEntry = YES; //密码  textField.autocorrectionType = UITextAutocorrectionTypeNo;  textField.autocapitalizationType = UITextAutocapitalizationTypeNone;  textField.returnKeyType = UIReturnKeyDone;  textField.clearButtonMode = UITextFieldViewModeWhileEditing; //编辑时会出现个修改X  textField.delegate = self; 2.要实现的Delegate方法,关闭键盘  - (BOOL)textFieldShouldReturn:(UITextField *)textField  {  [self.textField resignFirstResponder];  return YES;  } 3. 可以在UITextField使用下面方法,按return键返回 -(IBAction) textFieldDone:(id) sender {  [textFieldName resignFirstResponder]; } 链接TextField控件的"Did end on exit" //////////////////////////////////////////////////////////////////// 限制输入文本的长度 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {  if (range.location >= MAX_LENGTH)  return NO; // return NO to not change text  return YES; } if (textField.text.length >= 10 && range.length == 0)  return NO; return YES; - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {  if ([textField.text length] > MAXLENGTH)  {  textField.text = [textField.text substringToIndex:MAXLENGTH-1];  return NO;  }  return YES; } ////////////////////////////////////////////////////////////////////// 使用UITextFieldDelegate来隐藏键盘 在iPhone界面上,时常会需要当用户输入完内容后,隐藏键盘。 当然有很多方法,今天只介绍使用UITextFieldDelegate这个协议实现隐藏键盘。 其实很简单, 需要三步: 1. 在你的控制器类中,加入UITextFieldDelegate这个协议 如:@interface AddItemViewController : UIViewController <UITextFieldDelegate> 2. 在使用了UITextFieldDelegate协议的控制器类的实现中,加入- (BOOL)textFieldShouldReturn:方法。 - (BOOL)textFieldShouldReturn:(UITextField *)textField {   [textField resignFirstResponder];  return YES; }  //设置焦点:  [UITextField becomeFirstResponder];  3. 将xib文件中的TextField控件的delegate变量指向到之前使用UITextFieldDelegate协议的那个控制器类,将 TextField的delegate IBOutlet变量右键链接到前面的控制器类的实例上。或者使用代码方式,指定相关TextField的delegate变量。  - (void)viewDidLoad  {   [super viewDidLoad];   itemNameField.delegate = self;   priceField.delegate = self;  }
    
    1. 答案来源网络,供参考,希望对您有帮助
    2019-10-11 15:30:25
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载