IOS开发入门之iOS - UITextField
白羽 2018-09-04 来源 :网络 阅读 1263 评论 0

摘要:本文将带你了解IOS开发入门之iOS - UITextField,希望本文对大家学ios有所帮助。

        本文将带你了解IOS开发入门之iOS - UITextField,希望本文对大家学ios有所帮助。


 
  
  
   前言
    NS_CLASS_AVAILABLE_IOS(2_0) @interface UITextField : UIControl <UITextInput, NSCoding>
    @available(iOS 2.0, *)       public class UITextField : UIControl, UITextInput, NSCoding
1、UITextField 的创建

Objective-C
    // 实例化 UITextField 对象
    UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(20, 100, 200, 30)];

    // 将 textField 加到 window 上显示出来
    [self.view addSubview:textField];
Swift
    // 实例化 UITextField 对象
    let textField:UITextField = UITextField(frame: CGRectMake(20, 100, 200, 30))

    // 将 textField 加到 window 上显示出来  
    self.view.addSubview(textField)

2、UITextField 的设置

Objective-C
    // 设置边框样式
    /*
        UITextBorderStyleNone,                     无边框,默认
        UITextBorderStyleLine,                     直线边框
        UITextBorderStyleBezel,                    边框 + 阴影
        UITextBorderStyleRoundedRect               圆角矩形边框
     */
    textField.borderStyle = UITextBorderStyleLine;

    // 设置背景颜色
    /*
        默认是透明的
    */
    textField.backgroundColor = [UIColor yellowColor];

    // 设置背景图片
    textField.background = [UIImage imageNamed:@"pic2"];

    // 设置提示文字
    /*
        用户输入时自动消失
    */
    textField.placeholder = @"请输入用户名";

    // 设置输入的字体颜色
    textField.textColor = [UIColor redColor];

    // 设置文字对齐方式
    textField.textAlignment = NSTextAlignmentLeft;

    // 设置最小可缩小的字号
    textField.minimumFontSize = 10;

    // 自动调整文字大小
    /*
        自动调整文字的大小以适应 textField 的宽度
    */
    textField.adjustsFontSizeToFitWidth = YES;

    // 设置密文输入模式
    /*
        default is NO
    */
    textField.secureTextEntry = YES;

    // 设置显示清除按钮    
    /*
        UITextFieldViewModeNever,            // default
        UITextFieldViewModeWhileEditing,
        UITextFieldViewModeUnlessEditing,
        UITextFieldViewModeAlways
    */
    textField.clearButtonMode = UITextFieldViewModeWhileEditing;

    // 设置键盘样式
    /*
        UIKeyboardTypeDefault,                 // Default type for the current input method.
        UIKeyboardTypeASCIICapable,            // Displays a keyboard which can enter ASCII characters,
                                               // non-ASCII keyboards remain active
        UIKeyboardTypeNumbersAndPunctuation,   // Numbers and assorted punctuation.
        UIKeyboardTypeURL,                     // A type optimized for URL entry.
        UIKeyboardTypeNumberPad,               // A number pad (0-9). Suitable for PIN entry.
        UIKeyboardTypePhonePad,                // A phone pad (1-9, *, 0, #, with letters under the numbers).
        UIKeyboardTypeNamePhonePad,            // A type optimized for entering a person's name or phone number.
        UIKeyboardTypeEmailAddress,            // A type optimized for multiple email address entry.
        UIKeyboardTypeDecimalPad,              // A number pad with a decimal point.
        UIKeyboardTypeTwitter,                 // A type optimized for twitter text entry (easy access to @ #)
        UIKeyboardTypeWebSearch,               // A default keyboard type with URL-oriented addition.
        UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable,      // Deprecated
    */
    textField.keyboardType = UIKeyboardTypeDefault;

    // 设置返回键样式
    /*
        UIReturnKeyDefault,
        UIReturnKeyGo,
        UIReturnKeyGoogle,
        UIReturnKeyJoin,
        UIReturnKeyNext,
        UIReturnKeyRoute,
        UIReturnKeySearch,
        UIReturnKeySend,
        UIReturnKeyYahoo,
        UIReturnKeyDone,
        UIReturnKeyEmergencyCall,
        UIReturnKeyContinue NS_ENUM_AVAILABLE_IOS(9_0),
    */
    textField.returnKeyType = UIReturnKeyJoin;

    // 设置输入的字母大小写模式
    /*
        UITextAutocapitalizationTypeNone,
        UITextAutocapitalizationTypeWords,
        UITextAutocapitalizationTypeSentences,
        UITextAutocapitalizationTypeAllCharacters,
    */
    textField.autocapitalizationType = UITextAutocapitalizationTypeWords;

    // 设置左右视图显示模式
    /*
        不设置模式,左右视图显示不出来

        UITextFieldViewModeNever,
        UITextFieldViewModeWhileEditing,
        UITextFieldViewModeUnlessEditing,
        UITextFieldViewModeAlways
    */
    textField.leftViewMode = UITextFieldViewModeAlways;
    textField.rightViewMode = UITextFieldViewModeAlways;

    // 设置左右视图
    textField.leftView = label1;
    textField.rightView = label2;

    // 让 textField 获取第一响应
    /*
        打开应用程序或界面时直接弹出键盘
    */
    [textField becomeFirstResponder];

    // 让 textField 放弃第一响应
    /*
        收起键盘
    */
    [textField resignFirstResponder]; 

    // 设置 textField 的代理,需遵守协议 <UITextFieldDelegate>
    textField.delegate = self;
Swift
    // 设置边框样式
    /*
        case None                       无边框,默认
        case Line                       直线边框
        case Bezel                      边框 + 阴影
        case RoundedRect                圆角矩形边框
    */
    textField.borderStyle = .Line

    // 设置背景颜色
    /*
        默认是透明的
    */
    textField.backgroundColor = UIColor.yellowColor()

    // 设置背景图片
    textField.background = UIImage(named: "pic2")

    // 设置提示文字
    /*
        用户输入时自动消失
    */
    textField.placeholder = "请输入用户名"

    // 设置输入的字体颜色
    textField.textColor = UIColor.redColor()

    // 设置文字对齐方式
    textField.textAlignment = NSTextAlignment.Left

    // 设置最小可缩小的字号
    textField.minimumFontSize = 10

    // 自动调整文字大小
    /*
        自动调整文字的大小以适应 textField 的宽度
    */
    textField.adjustsFontSizeToFitWidth = true

    // 设置密文输入模式
    /*
        default is NO
    */
    textField.secureTextEntry = true

    // 设置显示清除按钮
    /*
        case Never                // default
        case WhileEditing
        case UnlessEditing
        case Always
    */
    textField.clearButtonMode = .WhileEditing

    // 设置键盘样式
    /*
        case Default         // Default type for the current input method.
        case ASCIICapable    // Displays a keyboard which can enter ASCII characters, 
                             // non-ASCII keyboards remain active
        case NumbersAndPunctuation  // Numbers and assorted punctuation.
        case URL             // A type optimized for URL entry.
        case NumberPad       // A number pad (0-9). Suitable for PIN entry.
        case PhonePad        // A phone pad (1-9, *, 0, #, with letters under the numbers).
        case NamePhonePad    // A type optimized for entering a person's name or phone number.
        case EmailAddress    // A type optimized for multiple email address entry.
        case DecimalPad      // A number pad with a decimal point.
        case Twitter         // A type optimized for twitter text entry (easy access to @ #)
        case WebSearch       // A default keyboard type with URL-oriented addition.

        public static var Alphabet: UIKeyboardType { get } // Deprecated
    */
    textField.keyboardType = .Default

    // 设置返回键样式
    /*
        case Default
        case Go
        case Google
        case Join
        case Next
        case Route
        case Search
        case Send
        case Yahoo
        case Done
        case EmergencyCall
        case Continue
    */
    textField.returnKeyType = .Join

    // 设置输入的字母大小写模式
    /*
        case None
        case Words
        case Sentences
        case AllCharacters
    */
    textField.autocapitalizationType = .Words

    // 设置左右视图显示模式
    /*
        不设置模式,左右视图显示不出来

        case Never
        case WhileEditing
        case UnlessEditing
        case Always
    */
    textField.leftViewMode = .Always
    textField.rightViewMode = .Always

    // 设置左右视图
    textField.leftView = label1
    textField.rightView = label2

    // 让 textField 获取第一响应
    /*
        打开应用程序或界面时直接弹出键盘
    */
    textField.becomeFirstResponder()

    // 让 textField 放弃第一响应
    /*
        收起键盘
    */
    textField.resignFirstResponder()

    // 设置 textField 的代理,需遵守协议 UITextFieldDelegate
    textField.delegate = self

3、textField 协议方法

协议方法,需遵守协议 UITextFieldDelegate,并设置代理
Objective-C
    // 将要开始编辑,编辑开始前被调用
    - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {

        return YES;
    }

    // 已经开始编辑,编辑开始后被调用,可监听键盘的弹出
    - (void)textFieldDidBeginEditing:(UITextField *)textField {

    }

    // 将要结束编辑,编辑结束前被调用
    - (BOOL)textFieldShouldEndEditing:(UITextField *)textField {

        return YES;
    }

    // 已经结束编辑,编辑结束后被调用,可监听键盘的回收
    - (void)textFieldDidEndEditing:(UITextField *)textField {

        // 输出 textfield 中输入的内容
        NSLog(@"您输入的内容为:%@", textField.text);
    }

    // 是否允许文本修改,文本修改前被调用
    /*
        NO 不允许输入,YES 允许输入(默认)
        range:光标范围
        string:当前输入的内容
    */
    - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

        return YES;
    }

    // 返回,键盘上的 return 键触摸后调用
    - (BOOL)textFieldShouldReturn:(UITextField *)textField {

        return YES;
    }

    // 清空,文本输入框中清除按钮被触摸时调用
    - (BOOL)textFieldShouldClear:(UITextField *)textField {

        return YES;
    }
Swift
    // 将要开始编辑,编辑开始前被调用
    func textFieldShouldBeginEditing(textField: UITextField) -> Bool {

        return true
    }

    // 已经开始编辑,编辑开始后被调用,可监听键盘的弹出
    func textFieldDidBeginEditing(textField: UITextField) {

    }

    // 将要结束编辑,编辑结束前被调用
    func textFieldShouldEndEditing(textField: UITextField) -> Bool {

        return true
    }

    // 已经结束编辑,编辑结束后被调用,可监听键盘的回收
    func textFieldDidEndEditing(textField: UITextField) {

        // 输出 textfield 中输入的内容
        print("您输入的内容为:\(textField.text)")                                                              
    }

    // 是否允许文本修改,文本修改前被调用
    /*
        false 不允许输入,true 允许输入(默认)
        range:光标范围
        string:当前输入的内容
    */
    func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {

        return true
    }

    // 返回,键盘上的 return 键触摸后调用
    func textFieldShouldReturn(textField: UITextField) -> Bool {

        return true
    }

    // 清空,文本输入框中清除按钮被触摸时调用
    func textFieldShouldClear(textField: UITextField) -> Bool {

        return true
    }

4、textField 的键盘回收

Objective-C

触摸手势回收

用触摸手势或表格滚动方式回收键盘,触摸界面或滚动表格视图时键盘消失

    // 单一 textField 回收键盘

        // 让 textField 放弃第一响应,收起键盘
        [textField resignFirstResponder];

    // 所有 textField 都回收键盘

        [self.view endEditing:YES];
return 键回收

用代理方式回收键盘(键盘上的 return 键回收键盘),需遵守协议 UITextFieldDelegate,并设置代理

    // 设置 textField 的代理
    textField1.delegate = self;
    textField2.delegate = self;

    // UITextFieldDelegate 协议方法返回,键盘上的 return 键点击后调用 
    - (BOOL)textFieldShouldReturn:(UITextField *)textField {

        UITextField *textField_1 = (id)[self.view viewWithTag:200];
        UITextField *textField_2 = (id)[self.view viewWithTag:300];

        if (textField == textField_1) {

            // 让 textField_2 获取第一响应
            // 点击 textfield_1 上的 return 键时,输入光标自动跳转到 textfield_2 内
            [textField_2 becomeFirstResponder];
        }
        else{
            // 让 textField_2 放弃第一响应
            // 点击 textfield_2 上的 return 键时,键盘回收
            [textField_2 resignFirstResponder];
        }

        return YES;
    }

Swift

触摸手势回收

用触摸手势或表格滚动方式回收键盘,触摸界面或滚动表格视图时键盘消失

    // 单一 textField 回收键盘

        // 让 textField 放弃第一响应,收起键盘
        textField.resignFirstResponder()

    // 所有 textField 都回收键盘

        self.view.endEditing(true)
return 键回收

用代理方式回收键盘(键盘上的 return 键回收键盘),需遵守协议 UITextFieldDelegate,并设置代理

    // 设置 textField 的代理
    textField1.delegate = self
    textField2.delegate = self

    // UITextFieldDelegate 协议方法返回,键盘上的 return 键点击后调用
    func textFieldShouldReturn(textField: UITextField) -> Bool {

        let textField_1:UITextField = self.view.viewWithTag(200) as! UITextField
        let textField_2:UITextField = self.view.viewWithTag(300) as! UITextField

        if textField == textField_1 {

            // 让 textField_2 获取第一响应
            // 点击 textfield_1 上的 return 键时,输入光标自动跳转到 textfield_2 内
            textField_2.becomeFirstResponder()
        }
        else{
            // 让 textField_2 放弃第一响应,点击 textfield_2 上的 return 键时,键盘回收
            textField_2.resignFirstResponder()
        }

        return true
    }


5、textField 视图的上升/下降

Objective-C

用系统观察者控制

可以获取到键盘的高度和键盘弹起和隐藏的时间
多个观察者
    // 添加系统通知观察者(检测键盘的显示与隐藏)

    // 检测键盘的弹起
    [[NSNotificationCenter defaultCenter] addObserver:self 
                                             selector:@selector(keyboardShow:) 
                                                 name:UIKeyboardWillShowNotification 
                                               object:nil];

    // 检测键盘的隐藏   
    [[NSNotificationCenter defaultCenter] addObserver:self 
                                             selector:@selector(keyboardHide:) 
                                                 name:UIKeyboardWillHideNotification 
                                               object:nil];

    // 键盘弹起事件处理
    - (void)keyboardShow:(NSNotification *)notification {

        // 取出键盘最终的高度
        CGFloat keyboardHeight = [notification.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue].size.height;

        // 取出键盘弹出需要花费的时间
        double duration = [notification.userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue];

        // 设置当前视图的 frame
        CGRect frame = self.view.frame;
        frame.origin.y = -keyboardHeight;

        [UIView animateWithDuration:duration animations:^{
            self.view.frame = frame;
        }];
    }

    // 键盘隐藏事件处理
    - (void)keyboardHide:(NSNotification *)notification {

        // 取出键盘弹出需要花费的时间
        double duration = [notification.userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue];

        // 设置当前视图的 frame
        CGRect frame = self.view.frame;
        frame.origin.y = 0;

        [UIView animateWithDuration:duration animations:^{
            self.view.frame = frame;
        }];
    }
单一观察者
    // 添加系统通知观察者(检测键盘的 frame 改变)

    [[NSNotificationCenter defaultCenter] addObserver:self 
                                             selector:@selector(keyboardWillChangeFrame:) 
                                                 name:UIKeyboardWillChangeFrameNotification 
                                               object:nil];

    // 键盘弹起隐藏事件处理
    - (void)keyboardWillChangeFrame:(NSNotification *)notification {

        // 取出键盘最终的 frame
        CGRect rect = [notification.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue];

        // 取出键盘弹出需要花费的时间
        double duration = [notification.userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue];

        // 设置当前视图的 frame
        CGRect frame = self.view.frame;
        frame.origin.y = -([UIScreen mainScreen].bounds.size.height - rect.origin.y);

        [UIView animateWithDuration:duration animations:^{
            self.view.frame = frame;
        }];
    }
视图上升或下降处理

设置 frame
    CGRect frame = self.view.frame;
    frame.origin.y = -keyboardHeight;
    [UIView animateWithDuration:duration animations:^{
        self.view.frame = frame;
    }];
设置 约束值
    self.bottomSpacing.constant = rect.size.height;
    [UIView animateWithDuration:duration animations:^{
        [self.view layoutIfNeeded];
    }];
设置 transform 属性
    [UIView animateWithDuration:duration animations:^{
        CGFloat ty = [UIScreen mainScreen].bounds.size.height - rect.origin.y;
        self.view.transform = CGAffineTransformMakeTranslation(0, -ty);
    }];


用协议方法控制
    // 开始编辑
    - (void)textFieldDidBeginEditing:(UITextField *)textField {

        // 获取当前视图的 frame
        CGRect frame = self.view.frame;
        frame.origin.y = -53;

        [UIView animateWithDuration:0.5 animations:^{
            self.view.frame = frame;
        }];
    }

    // 结束编辑
    - (void)textFieldDidEndEditing:(UITextField *)textField {

        CGRect frame = self.view.frame;
        frame.origin.y = 0;

        [UIView animateWithDuration:0.5 animations:^{
            self.view.frame = frame;
        }];
    }

Swift

用系统观察者控制

可以获取到键盘的高度和键盘弹起和隐藏的时间
多个观察者
    // 添加系统通知观察者(检测键盘的显示与隐藏)

    // 检测键盘的弹起
    NSNotificationCenter.defaultCenter().addObserver(self, 
                                            selector: #selector(UiTextField.keyboardShow(_:)), 
                                                name: UIKeyboardWillShowNotification, 
                                              object: nil)

    // 检测键盘的隐藏
    NSNotificationCenter.defaultCenter().addObserver(self, 
                                            selector: #selector(UiTextField.keyboardHide(_:)), 
                                                name: UIKeyboardWillHideNotification, 
                                              object: nil)

    // 键盘弹起事件处理
    func keyboardShow(notification:NSNotification) {

        // 取出键盘最终的高度
        let keyboardHeight:CGFloat = (notification.userInfo![UIKeyboardFrameEndUserInfoKey]?.CGRectValue().size.height)!

        // 取出键盘弹出需要花费的时间
        let duration:Double = notification.userInfo![UIKeyboardAnimationDurationUserInfoKey]!.doubleValue

        // 设置当前视图的 frame
        var frame:CGRect = self.view.frame
        frame.origin.y = -keyboardHeight

        UIView.animateWithDuration(duration) {
            self.view.frame = frame
        }
    }

    // 键盘隐藏事件处理
    func keyboardHide(notification:NSNotification) {

        // 取出键盘弹出需要花费的时间
        let duration:Double = notification.userInfo![UIKeyboardAnimationDurationUserInfoKey]!.doubleValue

        // 设置当前视图的 frame
        var frame:CGRect = self.view.frame
        frame.origin.y = 0

        UIView.animateWithDuration(duration) {
            self.view.frame = frame
        }
    }
单一观察者
    // 添加系统通知观察者(检测键盘的 frame 改变)

    NSNotificationCenter.defaultCenter().addObserver(self, 
                                            selector: #selector(UiTextField.keyboardWillChangeFrame(_:)), 
                                                name: UIKeyboardWillChangeFrameNotification, 
                                              object: nil)

    // 键盘弹起隐藏事件处理
    func keyboardWillChangeFrame(notification:NSNotification) {

        // 取出键盘最终的高度
        let rect:CGRect = (notification.userInfo![UIKeyboardFrameEndUserInfoKey]?.CGRectValue())!

        // 取出键盘弹出需要花费的时间
        let duration:Double = notification.userInfo![UIKeyboardAnimationDurationUserInfoKey]!.doubleValue

        // 设置当前视图的 frame
        var frame:CGRect = self.view.frame
        frame.origin.y = -(UIScreen.mainScreen().bounds.size.height - rect.origin.y)

        UIView.animateWithDuration(duration) {
            self.view.frame = frame
        }
    }
视图上升或下降处理

设置 frame
    var frame:CGRect = self.view.frame
    frame.origin.y = -keyboardHeight
    UIView.animateWithDuration(duration) {
        self.view.frame = frame
    }
设置 约束值
    self.bottomSpacing.constant = rect.size.height
    UIView.animateWithDuration(duration) {
        self.view.layoutIfNeeded()
    }
设置 transform 属性
    UIView.animateWithDuration(duration) { 
        let ty:CGFloat = UIScreen.mainScreen().bounds.size.height - rect.origin.y
        self.view.transform = CGAffineTransformMakeTranslation(0, -ty)
    }


用协议方法控制
    // 开始编辑
    func textFieldDidBeginEditing(textField: UITextField) {

        // 获取当前视图的 frame
        var frame:CGRect = self.view.frame
        frame.origin.y = -53

        UIView.animateWithDuration(0.5) {
            self.view.frame = frame
        }
    }

    // 结束编辑
    func textFieldDidEndEditing(textField: UITextField) {

        var frame:CGRect = self.view.frame
        frame.origin.y = 0

        UIView.animateWithDuration(0.5) {
            self.view.frame = frame
        }
    }


6、计算键盘高度

不同型号的 iOS 设备的键盘尺寸:
 Type          | iPhone 6(s) Plus |  iPhone 6(s) |  iPhone 5(s/c)/4(s)/SE
------------------------|:----------------:|:------------:|:-----------------------:
Default | | |
ASCIICapable | | |
NumbersAndPunctuation | | |
URL | 271 | 258 | 253
EmailAddress | | |
Twitter | | |
WebSearch | | |
Alphabet | | |
------------------------|------------------|--------------|-------------------------
NumberPad | | |
PhonePad | 226 | 216 | 216
NamePhonePad | | |
DecimalPad | | |
Objective-C
    // 在系统观察者响应方法中,获取观察的信息
    NSDictionary *userInfo = notification.userInfo;

    CGFloat keyboardHeight = [userInfo[@"UIKeyboardFrameEndUserInfoKey"] CGRectValue].size.height;
Swift
    // 在系统观察者响应方法中,获取观察的信息
    let userInfo = notification.userInfo!

    let keyboardHeight = userInfo["UIKeyboardFrameEndUserInfoKey"]?.CGRectValue().size.height

7、Storyboard 中设置

在 Storyboard 场景中设置

Text Field 设置

Text                         |  文字类型及文字
-------------------------------|-------------------
Color | 文字颜色
Font | 文字字体
Alignment | 文字对齐方式
Placeholder | 占位文字
|
Background | 背景图片
Disabled | 无效状态背景图片
|
Border Style | 边框类型
|
Clear Button | 清除按钮显示时间
-- Clear when editing begins | 开始编辑时显示清楚按钮
|
Min Font Size | 最小字体大小
-- Adjust to Fit | 自动调整文字大小
|
Capitalization | 大小写模式
Correction | 自动纠正
Spell Checking | 拼写检查
Keyboard Type | 键盘样式
Appearance |
Return Key | 返回键样式
-- Auto-enable Return Key | 自动使能返回键
-- Secure Text Entry | 密文输入
Control 设置

Alignment                    |  文字对齐方式
-------------------------------|-------------------
Content |
-- Selected | 选中
-- Enable | 可用
-- Highlighted | 高亮




本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之IOS频道!

本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved