图片 1

但是调用是 viewDidLayoutSubviews
viewDidAppear之前。我们为了不出现页面已经出现在用户严重,按钮
Done从可用变成不可用。 我们在 viewDidLayoutSubviews
方法里面来进行判断。

进来获取!!!!进来获取!!!!

当我们对已经存在的数据进行编辑的时候,如果进来没有做判断,可以允许用户进行编辑的时候,这是一个不好的交互体验。

图片 2

我们在输入框文字进行改变的时候,动态获取发现是可以的。当我在
ViewDidLoad方法直接调用这个方法竟然这个按钮还没有添加。

图片 3

所以觉得还是用系统的,之后禁用系统的交互。这样出问题的几率比较小。

图片 4

我首先想到的利用 KVO最后发现对于数组 字典是无法进行
KVO,只能通过其他的方法。这是系统内部的数组,我们不清楚系统怎么添加的,简单的拦截
NSArray的添加元素方法或者重写或者会出现其他的问题。

  • 字符串和传递进来的一样 则不允许进行提交交互
  • 当编辑框没有任何的编辑文字也不允许交互
- (void)setNeedDoneButtonOperation {
    NSString *nowEditString = self.editStringView.textFiled.text;
    /*!
     * 当正在编辑的字符串等于赋值过来字符串 或者没有编辑内容
     */
    BOOL isAllowOperation = nowEditString.length > 0 && ![nowEditString isEqualToString:self.editString];
    UIButton *btn;
    for (UIView *view in self.navigationController.navigationBar.subviews) {
        if ([view isKindOfClass:NSClassFromString(@"UINavigationButton")]) {
            UIButton *btn = (UIButton *)view;
            btn.userInteractionEnabled = isAllowOperation;
            btn.enabled = isAllowOperation;
        }
    }
}

UIBarButtonItem我用了这些姿势才能和你交互

图片 5

下面是需求完成图(自己做了优化)

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图