小编mjh*_*mjh的帖子

UICollectionViewController中的Pull-to-refresh

我想UICollectionViewController在iOS 6下实现pull-down-to-refresh .这很容易实现UITableViewController,如下所示:

UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
[refreshControl addTarget:self action:@selector(startRefresh:)
    forControlEvents:UIControlEventValueChanged];
self.refreshControl = refreshControl;
Run Code Online (Sandbox Code Playgroud)

以上实现了一个漂亮的液滴动画作为本机小部件的一部分.

由于UICollectionViewController"更加进化",UITableViewController人们会期待某种功能的奇偶性,但我无法在任何地方找到参考来实现这一点的内置方式.

  1. 有一种简单的方法可以做到这一点,我忽略了吗?
  2. 可以UIRefreshControl用某种方式使用UICollectionViewController,尽管报头和文档都指出它的意思与表视图中使用?

uikit ios6 pull-to-refresh

73
推荐指数
3
解决办法
3万
查看次数

在UICollectionViewCell上设置.reuseIdentifier

我有一个特殊的例子UICollectionViewCell,我想实例自己,并加入一个例子UICollectionView。为了使其正常工作,UICollectionViewCell实例需要.reuseIdentifier设置其属性。

通常,描述该单元格的类或Nib已向收集视图注册,并且收集视图.reuseIdentifier使用以下方法实例化了已设置的单元格:

- registerClass:forCellWithReuseIdentifier:
- registerNib:forCellWithReuseIdentifier:
Run Code Online (Sandbox Code Playgroud)

但是,由于我是在集合视图之外构造此单元格的,因此这些不适用于。

当我自己创建单元格时,似乎没有办法设置它.reuseIdentifier(因为它是只读属性,并且没有init...初始化它的方法)。

如果.reuseIdentifier没有设置,则UICollectionView抛出时添加的细胞异常。此行为不同于UITableView,后者的重用标识符是可选的。

设置集合视图单元格的重用标识符的一种简单的解决方法是将其嵌入.xib文件中并使用该Identifier框,然后使用以下命令创建该单元格的实例

[NSBundle.mainBundle loadNibNamed:@"MyCellName" owner:self options:nil][0];
Run Code Online (Sandbox Code Playgroud)

然后,我可以通过上述指示UICollectionViewCell,一切正常。

...但是这似乎是一个愚蠢而随意的循环。还有其他方法可以在不使用.xib-wrapper绕行的情况下在单元实例上设置此属性吗?


更新:Apple文档说明:

为了简化代码的创建过程,集合视图要求您始终使视图出队,而不是在代码中显式创建视图。

...这实际上是不正确的,因为它不需要这样做(即,只要以某种方式设置了它们的标识符(例如从a加载.xib),外部实例化的单元就可以正常工作,而且它也不会“简化在我的特定用例中创建代码的过程(而不是需要一个额外的文件;更进一步的是,要求集合视图创建这几个复杂的一次性对象是很麻烦的)。

但是以上似乎确实暗示了对这个问题的答案是否定的:故意创建一个可用的单元格是“困难的”,除非通过使收集视图将其出队。

xcode objective-c interface-builder nib uicollectionview

6
推荐指数
1
解决办法
1万
查看次数

创建一个捕获点击的UIView,但对所有其他手势都是透明的

我想实现以下目标.

场景:当用户键入特定文本字段时,iOS键盘在屏幕上.用户可以点击键盘和文本字段之外的任何位置来关闭键盘(不激活任何可见的按钮).此外,用户可以拖动键盘外部并观察可滚动视图的某些布置上的正常拖动行为.

从概念上讲,我UIView在屏幕的大部分区域放置了一个"封面" ,其行为如下:

  1. 如果用户点击封面,那么我捕捉到那个点击(这样我就可以,例如,关闭键盘).通过拦截UIView子类中的触摸事件或使用轻击手势识别器,可以轻松实现这一点.

  2. 如果用户拖动盖子,则盖子忽略转发这些触摸; 它们被下面的层接收,就像它们没有盖子一样.

因此:用户应该能够滚动封面下方的内容,但不能点击封面下方的内容.键盘和文本字段的"外部"点击应该关闭键盘(和封面),但不应激活任何东西.

我怎样才能做到这一点?

user-interface xcode uiscrollview gestures ios

6
推荐指数
1
解决办法
6333
查看次数

iOS 6中NSMapTable的订阅语法

我正在NSMapTableiOS 6项目中的许多地方使用,并希望能够使用新的字典下标样式来访问对象.(NSMapTable表现最像是一个NSMutableDictionary,但可以为它存储的键和值配置各种内存管理选项.此StackOverflow问题的更多背景.)

尝试在NSMapTable实例上使用下标语法时,编译器会报告此情况:

读取未在"NSMapTable*"类型的对象上找到的字典元素的预期方法.

如何使用类别扩展NSMapTable以允许新式NSDictionary下标?

syntax objective-c objective-c-category

5
推荐指数
1
解决办法
962
查看次数

着色链接在同一NSAttributedString中具有多种不同颜色

我正在使用TTTAttributedLabel来检测iOS 6项目中样式UILabel(使用NSAttributedString)中链接的点击次数.我希望能够为我的标签中的链接添加交替颜色 ; 我可以为不同的链接范围手动设置不同的颜色,只要库为我处理用户触摸的链接检测.似乎TTTAttributedLabel该类最后应用链接样式,因此特定范围的文本样式将被为类实例设置的单个链接样式覆盖.

即将潜入并尝试修改TTTAttributedLabel代码(要么不应用链接样式,要么之后应用我自己的样式范围),我想我会在这里询问是否有人有更好的想法来考虑实现这一点.不同的库可能支持同一标签中的各种颜色的链接范围,开箱即用?

interface-builder uikit ios

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