• ios中修改数字键盘


    自定义文本框:

    #import <UIKit/UIKit.h>
    
    //自定义键盘的键定义
    @interface DIYKey : NSObject
    {
    }
    @property(copy, nonatomic) NSString* name;
    @property(copy, nonatomic) NSString* representedString;
    @property(copy, nonatomic) NSString* displayString;
    @property(copy, nonatomic) NSString* displayType;
    @property(copy, nonatomic) NSString* interactionType;
    @property(copy, nonatomic) NSString* variantType;
    @property(assign, nonatomic) BOOL visible;
    @property(assign, nonatomic) unsigned displayTypeHint;
    @property(retain, nonatomic) NSString* displayRowHint;
    @property(copy, nonatomic) NSArray* variantKeys;
    @property(copy, nonatomic) NSString* overrideDisplayString;
    @property(assign, nonatomic) BOOL disabled;
    @property(assign, nonatomic) BOOL hidden;
    @end
    
    
    ////自定义键盘的视图
    @interface DIYKeyView : UIView
    {
    }
    @property(readonly, assign, nonatomic) DIYKey* key;
    @end
    
    
    @protocol MJTextFieldDelegate;
    
    @interface MJTextField : UITextField
    
    @property(nonatomic,assign)id<MJTextFieldDelegate>  MjDelegate;
    @property(nonatomic,retain) UIButton* sureButton;
    -(DIYKeyView *)FindView:(NSString *)name;
    -(void )addCustormButton:(NSString *)name title:(NSString *)title target:(id)target action:(SEL)action;
    -(void)delCustormButton;
    -(void )modifyKeyView:(NSString *)name display:(NSString *)display represent:(NSString *)represent interaction:(NSString *)type;
    @end
    
    
    @protocol MJTextFieldDelegate <NSObject>
    -(void)keyBoardShow:(MJTextField *)textField;
    -(void)keyboardHide:(MJTextField *)textField;
    
    @end
    #import "MJTextField.h"
    
    @implementation MJTextField
    
    - (id)initWithFrame:(CGRect)frame
    {
        self = [super initWithFrame:frame];
        if (self) {
            // Initialization code
        }
        return self;
    }
    
    -(BOOL)resignFirstResponder{
        BOOL ret=[super resignFirstResponder];
        if(self.MjDelegate){
            [self.MjDelegate keyboardHide:self];
        }
       
        return ret;
    }
    
    -(BOOL)becomeFirstResponder{
        BOOL ret=[super becomeFirstResponder];
        if(self.MjDelegate){
            [self.MjDelegate keyBoardShow:self];
        }
        return ret;
    }
    
    #pragma mark -find view
    
    -(DIYKeyView *)FindKeyView:(NSString *)name inView:(UIView *)view{
        for (DIYKeyView *subview in view.subviews)
        {
            
            NSString *className = NSStringFromClass([subview class]);
            
        
            
            if ([className isEqualToString:@"UIKBKeyView"])
            {
                NSLog(@"name-->%@",subview.key.name);
                if((name==nil)||[subview.key.name isEqualToString:name])
                    return subview;
                
            }
            else
            {
                DIYKeyView *subview2 = [self FindKeyView:name inView:subview];
                if (subview2!=nil) {
                    return subview2;
                }
                
            }
        }
        return nil;
        
    }
    
    -(DIYKeyView *)FindView:(NSString *)name{
           UIWindow* window = [[[UIApplication sharedApplication] windows] objectAtIndex:1];
        return [self FindKeyView:name inView:window];
        
    }
    
    //添加键
    -(void )addCustormButton:(NSString *)name title:(NSString *)title target:(id)target action:(SEL)action{
        //先找到指定的键盘
        DIYKeyView *view=[self FindView:name];
        if(view){
            self.sureButton=[[UIButton alloc] initWithFrame:view.frame];
            self.sureButton.titleLabel.font=[UIFont boldSystemFontOfSize:17];
            [self.sureButton setTitle:title forState:UIControlStateNormal];
            [self.sureButton setTitleColor:[UIColor darkGrayColor] forState:UIControlStateNormal];
            [self.sureButton setTitleColor:[UIColor blackColor] forState:UIControlStateHighlighted];
            [self.sureButton addTarget:target action:action forControlEvents:UIControlEventTouchUpInside];
            self.sureButton.showsTouchWhenHighlighted=YES;
            [view.superview addSubview:self.sureButton];
        }
        
    }
    
    //删除键
    -(void)delCustormButton{
        if(self.sureButton){
            [self.sureButton removeFromSuperview];
            self.sureButton=nil;
        }
    }
    
    //修改键盘
    -(void )modifyKeyView:(NSString *)name display:(NSString *)display represent:(NSString *)represent interaction:(NSString *)type{
        DIYKeyView *view=[self FindView:name];
        if(view){
            view.key.displayString=display;//键盘显示的内容
            view.key.representedString=represent;//点击键盘,输入的内容
            if(type){
            view.key.displayType=type;
            }
      [view setNeedsDisplay];
        }
    }
    
    
    @end
    #import <UIKit/UIKit.h>
    #import "MJTextField.h"
    
    @interface ViewController : UIViewController<MJTextFieldDelegate>
    - (IBAction)click:(id)sender;
    @property (retain, nonatomic) IBOutlet UITextField *text;
    
    @end
    
    #import "ViewController.h"
    
    @interface ViewController ()
    
    @end
    
    @implementation ViewController
    
    
    #pragma mark -生命周期方法
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        MJTextField *mj=[[MJTextField alloc] initWithFrame:CGRectMake(0, 0, 100, 50)];
        mj.borderStyle=UITextBorderStyleRoundedRect;
        mj.keyboardType=UIKeyboardTypeNumberPad;
        mj.tag=1;
        mj.MjDelegate=self;
        [self.view addSubview:mj];
        [mj release];
        
        
        MJTextField *mj1=[[MJTextField alloc] initWithFrame:CGRectMake(0, 150, 100, 50)];
        mj1.borderStyle=UITextBorderStyleRoundedRect;
        mj1.keyboardType=UIKeyboardTypeDefault;
        mj1.MjDelegate=self;
        mj1.tag=2;
        mj1.returnKeyType=UIReturnKeyDone;
        [self.view addSubview:mj1];
        [mj1 release];
        
     
    }
    
    - (void)didReceiveMemoryWarning
    {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    
    -(void)keyBoardShow:(MJTextField *)textField{
    
        // Let's crazy!
        if(1==textField.tag){
            [textField modifyKeyView:@"NumberPad-1" display:@"x" represent:@"aa" interaction:nil];
    
        }
        
    
    }
    -(void)keyboardHide:(MJTextField *)textField{
        [textField delCustormButton];
    }
    
    
    - (void)dealloc
    {
    
        [super dealloc];
    }
    
    -(void)myclick:(id)sender{
        NSLog(@"aa");
    }
    
    
    -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
        [self.view endEditing:YES];
    }
    
    
    
    
    
    @end
  • 相关阅读:
    JDK里的设计模式
    设计模式之注册表模式
    设计模式多线程方面之Thread-Per-Message 模式
    UML类图关系大全
    记大三开学的第一个月末
    【OC加强】NSDate的使用方法——日期时间在实际开发中比較有用
    iOS 多线程开发之OperationQueue(二)NSOperation VS GCD
    Cocos2d-x Layout简单使用
    POJ 1205 Water Treatment Plants(递推)
    Troubleshooting &quot;Global Enqueue Services Deadlock detected&quot; (Doc ID 1443482.1)
  • 原文地址:https://www.cnblogs.com/gcb999/p/3200243.html
Copyright © 2020-2023  润新知