iOS开发篇——UITextField

官方UITextField

@interface UITextField : UIControl <UITextInput, NSCoding> 

@property(nonatomic,copy)   NSString               *text;                 // 文本         default is nil
@property(nonatomic,copy)   NSAttributedString     *attributedText NS_AVAILABLE_IOS(6_0); // default is nil
@property(nonatomic,retain) UIColor                *textColor;            // 文本颜色      default is nil. use opaque black
@property(nonatomic,retain) UIFont                 *font;                 // 文本字体      default is nil. use system font 12 pt
@property(nonatomic)        NSTextAlignment         textAlignment;        // 文本的排版    default is NSLeftTextAlignment
@property(nonatomic)        UITextBorderStyle       borderStyle;          // 边框的样式    default is UITextBorderStyleNone. If set to UITextBorderStyleRoundedRect, custom background images are ignored.
@property(nonatomic,copy)   NSDictionary           *defaultTextAttributes NS_AVAILABLE_IOS(7_0); //文本属性 用字典填充 applies attributes to the full range of text. Unset attributes act like default values.

@property(nonatomic,copy)   NSString               *placeholder;          // 文本填充      default is nil. string is drawn 70% gray
@property(nonatomic,copy)   NSAttributedString     *attributedPlaceholder NS_AVAILABLE_IOS(6_0); // default is nil
@property(nonatomic)        BOOL                    clearsOnBeginEditing; // 开始编辑的时候清空  default is NO which moves cursor to location clicked. if YES, all text cleared
@property(nonatomic)        BOOL                    adjustsFontSizeToFitWidth; //自适应文本到宽度 default is NO. if YES, text will shrink to minFontSize along baseline
@property(nonatomic)        CGFloat                 minimumFontSize;      //最小的文本大小 default is 0.0. actual min may be pinned to something readable. used if adjustsFontSizeToFitWidth is YES
@property(nonatomic,assign) id<UITextFieldDelegate> delegate;             // 协议         default is nil. weak reference
@property(nonatomic,retain) UIImage                *background;           // 背景         default is nil. draw in border rect. image should be stretchable
@property(nonatomic,retain) UIImage                *disabledBackground;   // 禁用的背景    default is nil. ignored if background not set. image should be stretchable

@property(nonatomic,readonly,getter=isEditing) BOOL editing;              //是否被编辑
@property(nonatomic) BOOL allowsEditingTextAttributes NS_AVAILABLE_IOS(6_0); // default is NO. allows editing text attributes with style operations and pasting rich text
@property(nonatomic,copy) NSDictionary *typingAttributes NS_AVAILABLE_IOS(6_0); // automatically resets when the selection changes

// You can supply custom views which are displayed at the left or right
// sides of the text field. Uses for such views could be to show an icon or
// a button to operate on the text in the field in an application-defined
// manner.
// 
// A very common use is to display a clear button on the right side of the
// text field, and a standard clear button is provided. Note: if the clear
// button overlaps one of the other views, the clear button will be given
// precedence.

@property(nonatomic)        UITextFieldViewMode  clearButtonMode; // sets when the clear button shows up. default is UITextFieldViewModeNever

@property(nonatomic,retain) UIView              *leftView;        // e.g. magnifying glass
@property(nonatomic)        UITextFieldViewMode  leftViewMode;    // sets when the left view shows up. default is UITextFieldViewModeNever

@property(nonatomic,retain) UIView              *rightView;       // e.g. bookmarks button
@property(nonatomic)        UITextFieldViewMode  rightViewMode;   // sets when the right view shows up. default is UITextFieldViewModeNever

// drawing and positioning overrides

- (CGRect)borderRectForBounds:(CGRect)bounds;
- (CGRect)textRectForBounds:(CGRect)bounds;
- (CGRect)placeholderRectForBounds:(CGRect)bounds;
- (CGRect)editingRectForBounds:(CGRect)bounds;
- (CGRect)clearButtonRectForBounds:(CGRect)bounds;
- (CGRect)leftViewRectForBounds:(CGRect)bounds;
- (CGRect)rightViewRectForBounds:(CGRect)bounds;

- (void)drawTextInRect:(CGRect)rect;
- (void)drawPlaceholderInRect:(CGRect)rect;

// Presented when object becomes first responder.  If set to nil, reverts to following responder chain.  If
// set while first responder, will not take effect until reloadInputViews is called.
@property (readwrite, retain) UIView *inputView;             //键盘的view
@property (readwrite, retain) UIView *inputAccessoryView;    //想在键盘上展示一个自定义的view时,你就可以设置该属性

@property(nonatomic) BOOL clearsOnInsertion NS_AVAILABLE_IOS(6_0); // defaults to NO. if YES, the selection UI is hidden, and inserting text will replace the contents of the field. changing the selection will automatically set this to NO.

@end
基本使用:

UITextField *textField = [[UITextField alloc]initWithFrame:CGRectMake(100, 100, 200, 50)];
textField.tag = 10;
textField.borderStyle = UITextBorderStyleRoundedRect;//

#pragma mark - 关于文本的设置
-(void)textSetting
{
    //找到文本输入框
    UITextField *textField = (id)[self.view viewWithTag:10];
    //设置文字
//    textField.text = @"我是文本框";
    //设置文字颜色
    textField.textColor = [UIColor redColor];
    //设置文字字体
    textField.font = [UIFont boldSystemFontOfSize:25];
    //设置文字对齐方式,默认居左
    textField.textAlignment = NSTextAlignmentRight;
    /**
     NSTextAlignmentLeft
     NSTextAlignmentRight
     NSTextAlignmentCenter
     */
    //设置文字自适应宽度
    textField.adjustsFontSizeToFitWidth = YES;
    //设置允许的最小字体,在adjustsFontSizeToFitWidth = YES,才有效
    textField.minimumFontSize = 17;
    
    //设置提示文字
    textField.placeholder = @"请输入用户名";
    //设置是否使用密文输入
//    textField.secureTextEntry = YES;
    
    //设置开始编辑时,清除已有的文字
    textField.clearsOnBeginEditing = YES;
}
#pragma mark - 关于样式的设置

-(void)styleSetting
{
    //找到已经创建好的UITextField
    UITextField *textField = (UITextField *)[self.view viewWithTag:10];
    //设置背景颜色
//    textField.backgroundColor = [UIColor cyanColor];
    //设置边框样式
    textField.borderStyle = UITextBorderStyleNone;
    /**
     UITextBorderStyleNone
     无边框
     UITextBorderStyleLine
     线性矩形
     UITextBorderStyleBezel
     尖角矩形
     UITextBorderStyleRoundedRect
     圆角矩形
     */
    //通过layer设置圆角
    textField.layer.cornerRadius = 10;
    textField.layer.borderColor = [UIColor lightGrayColor].CGColor;
    textField.layer.borderWidth = 1;
    
    //设置是否显示清除按钮
    textField.clearButtonMode = UITextFieldViewModeUnlessEditing;
    //显示清除按钮的前提都是要有文字
    /**
     UITextFieldViewModeNever,
     //从不显示
     UITextFieldViewModeWhileEditing,
     //编辑时显示
     UITextFieldViewModeUnlessEditing,
     //非编辑时显示
     UITextFieldViewModeAlways
     //一直显示
     */
    
    //成为第一响应者
    //第一响应者,一个界面可能有多个可输入的控件,哪一个正在编辑哪一个就是第一响应者
    [textField becomeFirstResponder];
    
    //设置背景图片
    textField.background = [UIImage imageNamed:@"1.png"];
    //设置不可编辑时的背景图
    textField.disabledBackground = [UIImage imageNamed:@"5.png"];
    //设置是否可以编辑,YES 可以编辑,NO不可以
//    textField.enabled = NO;
    UIView *leftView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 50, 50)];
    leftView.backgroundColor = [UIColor magentaColor];
    //设置左视图,所有直接或间接继承于UIView的类的对象,都可以作为左视图
    textField.leftView = leftView;
    //设置左视图的显示模式
    textField.leftViewMode = UITextFieldViewModeAlways;
    
    UIView *rightView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 50, 50)];
    rightView.backgroundColor = [UIColor yellowColor];
    //设置右视图
    textField.rightView = rightView;
    //设置右视图的显示模式
    textField.rightViewMode = UITextFieldViewModeAlways;
}

自定制输入键盘

创建一个协议:

@protocol KeyBoardViewDelegate <NSObject>


-(void)inputText:(NSString *)text;

@end

创建View

@interface KeyBoardView : UIView

@property(nonatomic, assign) id <KeyBoardViewDelegate> delegate;

@end
@implementation KeyBoardView

-(instancetype)init
{
    self = [super init];
    if (self) {
        CGSize size = [UIScreen mainScreen].bounds.size;
        self.frame = CGRectMake(0, 0, size.width, 258);
        [self createButtons];
    }
    return self;
    
}

-(void)createButtons
{
    NSArray *array = @[@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"0",@"+",@"-"];
    int i = 0;
    for (NSString *title in  array)
    {
        //遍历标题,创建按钮
        UIButton *button = [[UIButton alloc]init];
        button.backgroundColor = [UIColor lightGrayColor];
        button.frame = CGRectMake(10 + (i % 3) * 90, 10 + (i / 3) * 50, 85, 45);
        [button setTitle:title forState:UIControlStateNormal];
        [button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
        button.titleLabel.font = [UIFont boldSystemFontOfSize:30];
        [button addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
        [self addSubview:button];
        i++;
    }
}

-(void)buttonClicked:(UIButton *)sender
{
    //代理存在,且能响应inputText:这个方法
    if(_delegate && [_delegate respondsToSelector:@selector(inputText:)])
    {
        [_delegate inputText:sender.titleLabel.text];
    }
}
@end

以下是对提供的参考资料的总结,按照要求结构化多个要点分条输出: 4G/5G无线网络优化与网规案例分析: NSA站点下终端掉4G问题:部分用户反馈NSA终端频繁掉4G,主要因终端主动发起SCGfail导致。分析显示,在信号较好的环境下,终端可能因节能、过热保护等原因主动释放连接。解决方案建议终端侧进行分析处理,尝试关闭节电开关等。 RSSI算法识别天馈遮挡:通过计算RSSI平均值及差值识别天馈遮挡,差值大于3dB则认定有遮挡。不同设备分组规则不同,如64T和32T。此方法可有效帮助现场人员识别因环境变化引起的网络问题。 5G 160M组网小区CA不生效:某5G站点开启100M+60M CA功能后,测试发现UE无法正常使用CA功能。问题原因在于CA频点集标识配置错误,修正后测试正常。 5G网络优化与策略: CCE映射方式优化:针对诺基亚站点覆盖农村区域,通过优化CCE资源映射方式(交织、非交织),提升RRC连接建立成功率和无线接通率。非交织方式相比交织方式有显著提升。 5G AAU两扇区组网:与三扇区组网相比,AAU两扇区组网在RSRP、SINR、下载速率和上传速率上表现不同,需根据具体场景选择适合的组网方式。 5G语音解决方案:包括沿用4G语音解决方案、EPS Fallback方案和VoNR方案。不同方案适用于不同的5G组网策略,如NSA和SA,并影响语音连续性和网络覆盖。 4G网络优化与资源利用: 4G室分设备利旧:面对4G网络投资压减与资源需求矛盾,提出利旧多维度调优策略,包括资源整合、统筹调配既有资源,以满足新增需求和提质增效。 宏站RRU设备1托N射灯:针对5G深度覆盖需求,研究使用宏站AAU结合1托N射灯方案,快速便捷地开通5G站点,提升深度覆盖能力。 基站与流程管理: 爱立信LTE基站邻区添加流程:未提供具体内容,但通常涉及邻区规划、参数配置、测试验证等步骤,以确保基站间顺畅切换和覆盖连续性。 网络规划与策略: 新高铁跨海大桥覆盖方案试点:虽未提供详细内容,但可推测涉及高铁跨海大桥区域的4G/5G网络覆盖规划,需考虑信号穿透、移动性管理、网络容量等因素。 总结: 提供的参考资料涵盖了4G/5G无线网络优化、网规案例分析、网络优化策略、资源利用、基站管理等多个方面。 通过具体案例分析,展示了无线网络优化中的常见问题及解决方案,如NSA终端掉4G、RSSI识别天馈遮挡、CA不生效等。 强调了5G网络优化与策略的重要性,包括CCE映射方式优化、5G语音解决方案、AAU扇区组网选择等。 提出了4G网络优化与资源利用的策略,如室分设备利旧、宏站RRU设备1托N射灯等。 基站与流程管理方面,提到了爱立信LTE基站邻区添加流程,但未给出具体细节。 新高铁跨海大桥覆盖方案试点展示了特殊场景下的网络规划需求。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值