小编Sti*_*and的帖子

InputAccessoryView停靠在底部

我正在尝试实现与Apple的消息应用程序中底部文本输入栏类似的定位行为.

我尝试了许多方法,搜索高低,有许多类似的问题,但没有一个令人满意.

指定:

  1. UIToolbar视图的底部有一个
  2. 当键盘出现并消失时,工具栏将跟随键盘
  3. 当键盘可见时,工具栏应保持在键盘顶部
  4. 键盘隐藏后,工具栏将保持("停靠")在视图的底部

建议的解决方案:

手动设置工具栏的动画以响应键盘外观通知

此解决方案不符合第二个要求的特殊情况(工具栏是在键盘出现和消失时跟随键盘):

  • 在iOS 7中,UIScrollViewKeyboardDismissMode被介绍了.它启用了用于解除键盘的交互式手势.当用户翻过键盘的顶部边缘时,键盘框架逐渐跟随.此解决方案无法容纳此行为,只是将工具栏搁置在其动画位置.

此外,此解决方案也无法满足第三个要求的特殊情况(当键盘可见时,工具栏应保持在键盘顶部):

  • 回转.这个解决方案需要额外的,烦人的无关代码(我们将在下一个提出的解决方案中看到)来旋转工具栏以响应设备旋转.

此解决方案的另一个问题:

  • 键盘高度.使用此解决方案,工具栏不会被假定为键盘高度的一部分,因此必须编写其他代码以支持正确插入内容.

下一个提出的解

UIResponderinputAccessoryView

这个解决方案似乎是Apple打算支持这种行为的方式,因为它解决了手动设置工具栏动画的所有缺点.但是这个解决方案完全忽略了第四个要求(当键盘被隐藏时,工具栏保持("停靠")在视图的底部).


似乎解决方案是使用UIResponder's inputAccessoryView,但不知何故使得inputAccessoryView不移动到视图之下.我正在寻找干净的代码来实现这一目标.在其他地方有精心制作的,几乎是高贵的尝试,但如上所述,它们不符合要求.

在我的特定情况下,我希望使用UINavigationController工具栏,这需要额外的问题,因为这不是预期的行为UINavigationController.无论如何,我愿意介绍一些hacky修复来实现这一目标.

uitoolbar uinavigationcontroller uikeyboard uiresponder ios

46
推荐指数
4
解决办法
2万
查看次数

如何在NSPredicate中使用"ALL"聚合操作来过滤基于CoreData的集合

基于下面的数据模型

数据模型

并且基于用户输入,我创建了一个名为selectedTags的实体Tag的managedObjects的NSSet .


我的问题:

[NSPredicate predicateWithFormat:@"ANY entryTags IN %@", selectedTags];
Run Code Online (Sandbox Code Playgroud)

...这将返回任何条目,其中至少有一个entryTag集合中的entryTag.

我想要的东西是:

[NSPredicate predicateWithFormat:@"ALL entryTags IN %@", selectedTags];
Run Code Online (Sandbox Code Playgroud)

...注意唯一的变化是"任何"到"全部".这说明了我想要的,但不起作用.

为了制定我期望的结果:

我正在寻找一种解决方案,它只会返回条目标签,这些条目的条目都在selectedTags列表中(但同时,如果可能的话,不一定是相反的方式).

进一步说明:

(标签)妈妈
(标签)爸爸
(标签)礼物

(入门)她是她.....(标签)妈妈
(入职)他是他........(标签)爸爸
(入职)给妈妈的礼物......(标签:)妈妈,送给
父亲的礼物(入职).....(标签:)爸爸,礼物

如果selectedTags包含"妈妈"和"礼物",那么"爸爸的礼物"条目将会显示,因为它有"礼物"标签.我宁愿让它不显示:)

core-data objective-c nspredicate ios

16
推荐指数
2
解决办法
8379
查看次数

在格式字符串之外使用 NSPredicate 的 SELF

我在 CoreData 存储上使用了 fetchedResultsController,我想创建一个谓词,它会根据这个概念为我提供 fetchedObjects:

[NSPredicate predicateWithFormat:@"%i > 0", [self countForObject:SELF]]
Run Code Online (Sandbox Code Playgroud)

countForObject 是一种基于参数 anObject 返回整数的方法,我希望将其作为 SELF。

编辑

看来我应该为此使用块。我已经将一些代码粘在一起,但我的应用程序在使用时崩溃而没有任何反馈:

    [NSPredicate predicateWithBlock:^BOOL(id object, NSDictionary *bindings){
        return ([self countForObject:object] > 0);
    }];
Run Code Online (Sandbox Code Playgroud)

core-data nspredicate nsfetchedresultscontroller ios

2
推荐指数
1
解决办法
3258
查看次数