封装代理

LTView.h

@interface LTView : UIView
{
    UILabel *_lable;
    UITextField *_textField;
}

#pragma mark - 自定义初始化方法
- (instancetype)initWithFrame:(CGRect)frame
                         text:(NSString *)text
                  placeHolder:(NSString *)placeHolder
                     isSecure:(BOOL)isSecuer;

#pragma mark - textField 的代理
- (void)setTextFieldDelegate:(id<UITextFieldDelegate>)delegate;

#pragma mark - 获取 textField
- (UITextField *)getTextField;

LTView.m

@implementation LTView

#pragma mark - 自定义初始化方法
- (instancetype)initWithFrame:(CGRect)frame
                         text:(NSString *)text
                  placeHolder:(NSString *)placeHolder
                     isSecure:(BOOL)isSecuer
{
    self = [super initWithFrame:frame];
    if (self) {
        [self createLabel:text];
        [self createTextField:placeHolder isSecure:isSecuer];
    }
    return self;
}

- (void)createLabel:(NSString *)text
{
    _lable = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, self.frame.size.width / 4, self.frame.size.height)];
    _lable.text = text;
    [self addSubview:_lable];
    [_lable release];
}

- (void)createTextField:(NSString *)placeHolder
               isSecure:(BOOL)secure
{
    _textField = [[UITextField alloc] initWithFrame:CGRectMake(CGRectGetMaxX(_lable.frame), 0, self.frame.size.width / 4 * 3, self.frame.size.height)];
    _textField.placeholder = placeHolder;
    _textField.secureTextEntry = secure;
    [self addSubview:_textField];
    [_textField release];
}

#pragma mark - textField 的代理
- (void)setTextFieldDelegate:(id<UITextFieldDelegate>)delegate
{
    _textField.delegate = delegate;
}

#pragma mark - 获取 textField
- (UITextField *)getTextField
{
    return _textField;
}

AppDelegate.h

@class LTView;

@interface AppDelegate : UIResponder <UIApplicationDelegate,UITextFieldDelegate>

@property (strong, nonatomic) UIWindow *window;
@property (nonatomic, retain) LTView *userName;
@property (nonatomic, retain) LTView *userPWD;

AppDelegate.m


#pragma mark - 重写
#pragma mark dealloc
- (void)dealloc
{
    [_window release];
    [_userName release];
    [_userPWD release];

    [super dealloc];
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    //设置window
    self.window = [[[UIWindow alloc] init] autorelease];
    self.window.frame = [UIScreen mainScreen].bounds;
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];

    self.userName = [[LTView alloc] initWithFrame:CGRectMake(30, 80, 260, 40) text:@"用户名" placeHolder:@"请输入用户名" isSecure:NO];
    [self.userName setTextFieldDelegate:self];
    [self.window addSubview:_userName];
    [_userName release];

    self.userPWD = [[LTView alloc] initWithFrame:CGRectMake(30, 140, 260, 40) text:@"密码" placeHolder:@"请输入密码" isSecure:YES];
    [self.userPWD setTextFieldDelegate:self];
    [self.window addSubview:_userPWD];
    [_userPWD release];

    // Override point for customization after application launch.
    return YES;
}

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    if (textField == [self.userName getTextField]) {
        [[self.userName getTextField] resignFirstResponder];
        [[self.userPWD getTextField] becomeFirstResponder];
    } else {
        [textField resignFirstResponder];
    }
    return YES;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-27 05:36:07

封装代理的相关文章

Noodjs 代理的实现:手动封装代理与http-proxy-middleware插件实现代理

手动封装代理 在服务里面封装一个http请求,发向被代理的服务器,将被代理服务器返回的数据,发送给客户端,承担一个中间桥梁作用,实现代理. /* 创建一个代理服务器,给发送过来的请求发送响应拉钩的服务器数据 http://localhost:8099/listmore.json?pageNo=2&pageSize=15 https://m.lagou.com/listmore.json?pageNo=2&pageSize=15 req.url拿到端口后面的数据 https.get向拉钩发送

Java设计模式(一)——代理模式

有高手云:了解设计模式才算是入门级的程序员. 所以为了入门我打算把我学习到的设计模式逐条总结下来.和别人的文章不同,我几乎只提供了测试源码与细节分类.原因是,我相信对于设计来说,你永远无法给出终极答案.不同的人看到会有不同的理解,所以大家一起讨论吧. 一.静态代理 设计测试接口,提供request()方法 package proxy.staticproxy; public interface Service { void request(); } Service 接口 创建两个实现类 packa

AOP、静态代理、JDK动态代理、CGLIB动态代理、Spring实现AOP、IOC+AOP

一.为什么需要代理模式 假设需实现一个计算的类Math.完成加.减.乘.除功能,如下所示: 1 package com.zhangguo.Spring041.aop01; 2 3 public class Math { 4 //加 5 public int add(int n1,int n2){ 6 int result=n1+n2; 7 System.out.println(n1+"+"+n2+"="+result); 8 return result; 9 } 1

Android动态加载框架DL的架构与基本原理解析

转载请注明出处,本文来自[ Mr.Simple的博客 ]. 我正在参加博客之星,点击这里投我一票吧,谢谢~ 前言 最近这一两年,Android App使用插件化技术开发的数量越来越大,其实还是业务地快速膨胀导致,需求越来越多,App越来越臃肿.虽然手机的内存空间不断地的增大,但是太大的安装包给用户也造成了心理压力.于是大家都会想到插件化的开发方式,把App做成一个平台,而不是一个独立的app.平台上可以集成各种各样的功能,功能模块也插件的形式添加进来,这些插件不需要安装,只需要用户按需下载到某个

Python语言在企业级应用上的十大谬误

英文原文:https://www.paypal-engineering.com/2014/12/10/10-myths-of-enterprise-python/ 翻译原文:http://www.oschina.net/translate/10-myths-of-enterprise-python?p=3#comments 语言多元化是PayPal编程文化中一个重要的组成部分.在C++和Java长期流行的同时,更多的团队选择了JvaScript和Scala.同时,Braintree的收购也引入了

cocos2d-x + Lua接入iOS原生SDK的实现方案[转]

相信很多朋友在使用cocos2d-x+lua开发游戏时都遇到过接入iOS原生SDK的问题,比如常见的接应用内支付SDK,广告SDK或是一些社交平台SDK等等,我也没少接过这类SDK.这篇文章主要是对我做过项目中接入iOS原生SDK实现方案的一个总结,在这里分享给大家,希望对自己和大家的开发工作都有帮助. 在展开正文之前,先做几点说明: 1.我这里说的iOS原生SDK是指那些完全用Objective-C语言开发,为原生iOS程序设计的SDK.swift很好很强大,不过我还没用过,惭愧,不过语言终归

【spring源码学习】spring的远程调用实现源码分析

[一]spring的远程调用提供的基础类 (1)org.springframework.remoting.support.RemotingSupport ===>spring提供实现的远程调用客户端实现的基础类 ===>例子:org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean org.springframework.remoting.caucho.HessianProxyFactoryBean (2)org.

java架构解密——深入再造AOP

在上篇博客中,大家和我一起研究了AOP的基本实现,但是,也给大家遗留了很多问题,在这篇博客,咱们一起研究如何针对这些问题进行持续的优化,看看在咱们的手里,AOP会成长为一个什么样的东西! 回顾: 看看上篇博客中,咱们一起实现的AOP类图: 咱们看看在CGLIB类里的问题 <span style="font-size:18px;">public class CGLibDynamicProxy implements MethodInterceptor { private sta

[原创]cocos2d-x + Lua接入iOS原生SDK的实现方案

相信很多朋友在使用cocos2d-x+lua开发游戏时都遇到过接入iOS原生SDK的问题,比如常见的接应用内支付SDK,广告SDK或是一些社交平台SDK等等,我也没少接过这类SDK.这篇文章主要是对我做过项目中接入iOS原生SDK实现方案的一个总结,在这里分享给大家,希望对自己和大家的开发工作都有帮助. 在展开正文之前,先做几点说明: 1.我这里说的iOS原生SDK是指那些完全用Objective-C语言开发,为原生iOS程序设计的SDK.swift很好很强大,不过我还没用过,惭愧,不过语言终归