rvc

来源:互联网 发布:苹果电脑播放视频软件 编辑:程序博客网 时间:2024/06/03 13:23
#import <UIKit/UIKit.h>@class MyTextFileld;@class MyButton;@interface RootView : UIView//声明属性@property (nonatomic, retain) MyButton *button;@property (nonatomic, retain) MyTextFileld *textField1;@property (nonatomic, retain) UITextField *textField;@end

#import "RootView.h"#import "TouchView.h"#import "MyButton.h"#import "MyTextFileld.h"@implementation RootView- (instancetype)initWithFrame:(CGRect)frame{    self = [super initWithFrame:frame];    if (self) {                //初始化添加一个_textField        _textField = [[UITextField alloc] initWithFrame:CGRectMake(100, 100, 200, 35)];        _textField.borderStyle = UITextBorderStyleRoundedRect;        _textField.placeholder = @"请输入密码";        _textField.backgroundColor = [UIColor grayColor];        [self addSubview:_textField];                        [self addAllView];    }    return self;}- (void)addAllView{    TouchView *touch1View  = [[TouchView alloc] initWithFrame:CGRectMake(100, 200, 100, 45)];    touch1View.backgroundColor = [UIColor magentaColor];    [self addSubview:touch1View];    [touch1View release];        //前面声明得有属性    self.button = [[MyButton alloc]initWithFrame:CGRectMake(100, 250, 100, 35)];    self.button.backgroundColor = [UIColor greenColor];        [self addSubview:_button];    NSLog(@"按钮");               self.textField1 = [[MyTextFileld alloc] initWithFrame:CGRectMake(100,300, 100, 40)];    _textField1.backgroundColor = [UIColor redColor];    //_textField.hidden = NO;  //显示隐藏    [self addSubview:_textField1];    [_textField1 release];    }- (void)dealloc{    [_button release];    [_textField release];    [_textField1 release];    [super dealloc];}@end

#import <UIKit/UIKit.h>@interface MyButton : UIView//声明方法- (void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents;@end

#import "MyButton.h"@interface MyButton (){    id _target;    SEL _action;    UIControlEvents _controlEvents;}@end@implementation MyButton#pragma mark - 触发事件- (void)addTarget:(id)target           action:(SEL)action forControlEvents:(UIControlEvents)controlEvents{            //target:代表rootViewController对象    //action:代表button的执行事件    //forControlEvents触发事件UIControlEventTouchUpInside    _target = target;    _action = action;    _controlEvents = controlEvents;}#pragma mark - 要写入在出发时间后面- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{    //当前对象执行事件        //让target去执行    if (_controlEvents == UIControlEventTouchUpInside) {                //让_target去调用_action消息,然后把当前对象self作为参数        [_target performSelector:_action withObject:self];    }}@end

//告诉编译器,MyMyTextFieldDelegate是一个协议,类似@class@protocol MyTextFieldDelegate;@interface MyTextFileld : UIView//添加delegate代理属性@property (nonatomic, assign) id <MyTextFieldDelegate> delegate;@end

#import "MyTextFileld.h"@implementation MyTextFileld- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{    //判断代理对象是否可移执行对象方法    if ([_delegate respondsToSelector:@selector(textFieldDidBeginEditing:)]) {        [_delegate textFieldBegan:self];    }}- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{    if ([_delegate respondsToSelector:@selector(textFieldEditing:)]) {                [_delegate textFieldEditing:self];    }}- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{    if ([_delegate respondsToSelector:@selector(textFieldEnded:)]) {                [_delegate textFieldEnded:self];    }}@end

0 0
原创粉丝点击