我们的设计师提出了一个不错的设计,其中 UITableView 右侧的索引要高于 UITableView 本身。它还有一些用于搜索的自定义图像和比默认实现更好的字体/颜色。但是,由于 UITableView 不支持自定义其索引(据我所知),我一直在尝试手动进行。用户界面如下所示:
这应该是一个简单的任务,但我有一个地狱般的时间让它工作。我在表格的右侧设置了一个 UIView,UIButtons 从上到下排列以表示我的索引。目标是当用户拖入/拖出 UIButtons 时,我会将 UITableView 跳到右侧部分。
我四处搜索,似乎要做的事情是听 UIControlEventTouchDragOutside 和 UIControlEventTouchDragEnter 事件,以了解我何时进入/退出其中一个 UIButton。
为此,我将整个按钮列表设置为一个 IBOutletCollection,我在 ViewDidLoad 中对其进行初始化,如下所示:
@property (retain, nonatomic) IBOutletCollection(UIButton) NSArray* indexButtons;
@implementation ViewBeerListViewController
...
@synthesize indexButtons = _indexButtons;
- (void)viewDidLoad
{
[super viewDidLoad];
...
// Go through the index buttons and set the change function
for (int i = 0; i < [self.indexButtons count]; ++i)
{
UIButton* button = [self.indexButtons objectAtIndex:i];
[button addTarget:self action:@selector(touchDragOutside:) forControlEvents:UIControlEventTouchDragOutside];
[button addTarget:self action:@selector(touchDragEnter:) forControlEvents:UIControlEventTouchDragEnter];
}
}
The functions touchDragOutside and touchDragEnter look like this:
- (IBAction)touchDragOutside:(UIButton*)sender
{
NSLog(@"Button %@ touch dragged outside", [sender titleLabel].text);
}
- (IBAction)touchDragEnter:(UIButton*)sender
{
NSLog(@"Button %@ touch dragged enter", [sender titleLabel].text);
}
这一切都构建并运行。但是,似乎我只获得了我开始触摸的按钮的事件。EG如果我触摸字母“G”,然后开始上下拖动,我只会看到触摸从“G”拖出“G”并拖入“G”的日志。当我浏览它们时,我没有收到任何其他 UIButtons 的事件。
任何解决此问题的帮助将不胜感激。很长一段时间以来,我一直被困在一个看似非常微不足道的问题上。
谢谢!