开发过程中的小知识点总结(六)

开发过程中的小知识点总结(六)

1、UITextField中禁止复制粘贴

封装UITextField,重写canPerformAction方法

 -(BOOL)canPerformAction:(SEL)action withSender:(id)sender

例:

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
    if (action == @selector(paste:)) //禁止粘贴
        return NO;
    if (action == @selector(copy:)) // 禁止复制
        return NO;
    return [super canPerformAction:action withSender:sender];
}

整体禁用,建议

//建议整体禁用(复制、粘贴、全选等都被禁用了)
-(BOOL)canPerformAction:(SEL)action withSender:(id)sender{

    UIMenuController *menuController = [UIMenuController sharedMenuController];
    if (menuController) {
        [UIMenuController sharedMenuController].menuVisible = NO;
    }
    return NO;
}

扩展

cut: // 剪切
copy: // 拷贝
select: // 选择
selectAll: // 全选
paste: // 粘贴
delete: // 删除
_promptForReplace: // Replace...
_transliterateChinese: // 简<=>繁
_showTextStyleOptions: // B/<u>U</u>
_define: // Define
_addShortcut: // Learn...
_accessibilitySpeak: // Speak
_accessibilitySpeakLanguageSelection: // Speak...
_accessibilityPauseSpeaking: // Pause
_share: // 共享...
makeTextWritingDirectionRightToLeft: // 往右缩进
makeTextWritingDirectionLeftToRight: // 往左缩进

2、UITextField的输入限制(仅使用于英文和数字)
实现UITextFieldDelegate的代理方法,

#pragma mark - UITextFieldDelegate Methods

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{

    if (textField == self.portTextField && (textField.text.length + string.length) > 20) {
        return NO;
    }
    
    if (string.length == 0) {
        return YES;
    }

    return YES;
}

3、设置UILabel文本里某几个字为特殊颜色的效果


   NSString *string = @"扫机身二维码/扫登录二维码";
   NSMutableAttributedString *hintString = [[NSMutableAttributedString alloc] initWithString:string];
   NSRange range = [[hintString string] rangeOfString:@"机身二维码"];
  [hintString addAttribute:@{ NSFontAttributeName : [UIFont systemFontOfSize:constantFromPhone6(17) weight:UIFontWeightSemibold],
   NSForegroundColorAttributeName : [UIColor colorWithHexString:@"#2283E2"] } range:range];
   _tipsLabel.attributedText = hintString;

参考链接:https://www.jianshu.com/p/8c7dd7d8501b

4、UILabel调整行间距

-(NSAttributedString*)getAttributedStringWithLineSpace:(CGFloat)lineSpace kern:(CGFloat)kern {
       NSMutableParagraphStyle*paragraphStyle = [NSMutableParagraphStylenew];
      //调整行间距
      paragraphStyle.lineSpacing= lineSpace;
      NSDictionary*attriDict =@{NSParagraphStyleAttributeName:paragraphStyle,NSKernAttributeName:@(kern)};
      NSMutableAttributedString*attributedString = [[NSMutableAttributedStringalloc]initWithString:selfattributes:attriDict];

      returnattributedString;
}

5、校验字符串是否是IP地址

例: 写一个NSString的分类,在分类里定义校验方法

- (BOOL)isIPAddress
{
    NSString *pattern = @"((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.){3}(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)";
    NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern];
    BOOL isMatch = [pred evaluateWithObject:self];
    return isMatch;
}

6、对NSMutableDictionary设置键值对时setObject和setValue的区别

    
     setObject :值必须是不为空的任意类型(nonnull),若value为空,会导致NSMutableDictionary出现崩溃现象。 key值可以传入不为空的id类型。
     
     setValue方法中,值可以为空值(nullable),并且在setValue方法中,假如你传的值为空的话,那么他会调用- (void)removeObjectForKey:(id)aKey;这个方法。所以用setValue方法可以有效的防止值为空所出现的崩溃现象。 key必须是不为空的字符串(nonnull NSString)。
     
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
webpack的重要知识点包括以下几个方面: 1. 模块化打包:webpack将前端的所有资源文件都视为模块,并根据模块的依赖关系进行静态分析,最终打包生成对应的静态资源。 2. 配置文件:webpack使用webpack.config.js文件来配置打包过程。在配置文件可以设置入口文件、输出路径、加载器、插件等各种参数,以满足项目的需求。 3. 加载器:webpack通过加载器来处理各种类型的文件。常用的加载器有babel-loader用于处理ES6及以上的JavaScript代码,css-loader用于处理CSS文件,file-loader用于处理图片和字体文件等。 4. 插件:webpack的插件用于扩展其功能。常用的插件有HtmlWebpackPlugin用于生成HTML文件,CleanWebpackPlugin用于清理输出目录,MiniCssExtractPlugin用于提取CSS文件等。 5. 开发服务器:webpack-dev-server是一个开发服务器,它可以在内存编译代码并提供资源,实现快速的开发和调试。 以上是webpack的一些重要知识点,它们可以帮助你更好地理解和使用webpack进行前端资源的构建和打包。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [webpack打包基础知识点与es6知识点.xmind](https://download.csdn.net/download/qq_43291759/13106867)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Webpack重要知识点](https://blog.csdn.net/sinat_17775997/article/details/95167425)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [webpack知识点总结](https://blog.csdn.net/baidu_39067385/article/details/119428908)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值