ios 总结这一周所遇到的问题以及处理方式

目录:
一.自定义textfired完成按钮
二. 调起微信之后显示支付验证签名失败
三.runtime分类设置关联的使用

一.自定义textfired完成按钮

由于在输入数量的时候需要监听输入数字以及点击时收起键盘
ios 11的键盘

图片.png

ios10的键盘
图片.png

注意:项目中使用IQKeyboardManager对键盘进行管理,但是对ios11似乎又不足之处,例如上面的两种效果。。

改造之后(ios10和ios11统一显示)

IMG_1838.PNG

自定义一个继承UITextField,在.h文件里面添加block回调

- (void)drawRect:(CGRect)rect {
    
    [super drawRect:rect];
 
    UIView *bar =  [[UIView alloc] initWithFrame:CGRectMake(0,0, Screen_Width,44)];
    bar.backgroundColor = kBgColor;
    UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(Screen_Width - 70, 7,60, 30)];
    [button setTitle:@"完成"forState:UIControlStateNormal];
    [button setTitleColor:kThemeColor forState:UIControlStateNormal];
    button.layer.borderColor = [UIColor colorWithHexString:@"62C6B2"].CGColor;
    button.layer.borderWidth =1;
    button.layer.cornerRadius =3;
    [_bar addSubview:button];

    [button addTarget:self action:@selector(btnOnClick) forControlEvents:UIControlEventTouchUpInside];
    self.inputAccessoryView.userInteractionEnabled = YES;
    self.inputAccessoryView = bar;
}

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event{
    __block  UIView * view = [super hitTest:point withEvent:event];
    if (view == nil) {
        
        [self.subviews enumerateObjectsUsingBlock:^(__kindof UIView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
            
            if ([obj isKindOfClass:[UIButton class]]) {
                view = obj;
                *stop = YES;
            }
        }];
        CGPoint newPoint = [view convertPoint:point fromView:self];
        // 判断触摸点是否在button上
        if (CGRectContainsPoint(view.bounds, newPoint)) {
            view = view;
        }else{
            return nil;
        }
    }
    return view;
}
- (void) btnOnClick {
    
    if (self.finishCallBack) {
        self.finishCallBack();
    }
}

使用 (且count是刚刚自定义一个继承UITextField的类)

    self.count.finishCallBack = ^() {
//做相应操作。。。
//收键盘
     [[[UIApplication sharedApplication] keyWindow] endEditing:YES];
    };
    

二. 调起微信之后显示支付验证签名失败

:首先刚开始接微信支付的时候,一直拉不起微信客户端,该设置的都设置了,始终拉不起,结果是后台签名不对,导致拉不起客服端。再后来过了一段时间后,拉起之后报支付验证失败,拿了一台安卓机试了两把,并没有问题,但是我并没有动过支付这一块的代码,麻蛋这就邪门了。找后台问是什么原因,说自己那边没有问题,说安卓能拉起,你拉不起应该是你的问题,于是乎各种的检查代码,对着官方文档的参数对了又对,在网上有看到说可能是时间戳导致的,于是对着后台这个参数timeStamp和之前能拉起的对比都是10位,以为这是没有问题的了.结果证明我错了。。问同行朋友以及百度上各种找问题和对文档,白白地浪费了1个多小时。。

134E2FEFECF43EA9F2B9B8201B104D2A.png
图片.png

图片.png
图片.png
图片.png

三.runtime分类设置关联的使用

首先我在底层打了BaseTableViewController,使用了#import "UIScrollView+EmptyDataSet.h"此框架,挺不错的一大神写的。将设置了

    _tableView.emptyDataSetSource = self;
        _tableView.emptyDataSetDelegate = self;
        self.succeedEmptyStr =@"当前暂无内容~";
        self.succeedEmptyImage = [UIImage imageNamed:@"mine_background"];

并为此设置了分类BaseTableViewController+PageStatus,在分类中进行一些暗操作。

.h文件
图片.png
.m文件
图片.png

图片.png
图片.png

图片.png
1.断网情况下显示
1
2.无数据情况下显示
IMG_1835.PNG
3.使用
图片.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,552评论 25 708
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,991评论 19 139
  • 西江月 闽西培田 丁酉年秋 帝赐恩荣村显,民风纯朴馨沿...
    学院词人阅读 399评论 0 4
  • 女人是水, 江河湖海, 载男行舟, 亦能覆舟, 冷时似冰, 热时鼎沸, 温柔似蜜, 恶如毒酒, 美如璞玉, 丑比瘌...
    双鱼的Antony阅读 574评论 5 50
  • 一个人是否具有心想事成的能力,与他的定力关系密切。所谓定力,就是专注力,抗干扰力。我能在当下专注,但是却容易被干扰...
    瑾熙的月亮阅读 625评论 0 0