2013-10-10 50 views
0

I'm创造一些UITextField小号编程,当我试图委派他们,我收到这样的警告:代表文本框,并限制只能输入数字

NAVPlanViewController * const的__strong”到不兼容的类型id<UITextFieldDelegate>的参数

textHeight = [[UITextField alloc] initWithFrame:CGRectMake(0, 120, 160, 40)]; 
[textHeight setDelegate:self]; 

,并在我的课的.c我加入@interface NAVPlanViewController : UIViewController <UITextViewDelegate>。 另外,我需要克制文本字段只接受数字,我想用这个代码做,而是因为UITextField不会Delegate我无法检查:

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

    if (!string.length) { 
      return YES; 
    } 

    if ([string rangeOfCharacterFromSet:[[NSCharacterSet decimalDigitCharacterSet] 
             invertedSet]].location != NSNotFound){ 
     //do something; 
     return NO; 
    } 
+2

请检查您的代理要使用的UITextField替换 .... ....接口NAVPlanViewController:UIViewController Ravindhiran

回答

2

在你NAVPlanViewController接口定义,<UITextViewDelegate>应是<UITextFieldDelegate>

+0

是的,我精疲力竭,完全概述了这一点。谢谢! –

+0

您确定您正在设置代表吗? – neilco

1

@neilco是正确的符合喜欢

@interface YourViewController()<UITextFieldDelegate> 
{ 

} 
@end 

并以惟独数字,键盘类型设置为UIKeyboardTypeNumberPad像

UITextField *age = [UITextField autolayoutView]; 
age.placeholder = kPlaceholderToEnterAge; 
age.borderStyle = UITextBorderStyleRoundedRect; 
age.clearButtonMode = UITextFieldViewModeWhileEditing; 
age.returnKeyType = UIReturnKeyDefault; 
age.keyboardType = UIKeyboardTypeNumberPad; 
age.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; 
age.textAlignment = NSTextAlignmentCenter; 
+0

这不适用于ipad,因为它没有数字键盘,并且粘贴字符(不是数字)也是可能的。 –

相关问题