这将是一个非常有针对性的问题,因为它适用于以前实际使用过UIActionSheetPicker的人。
我在我的 iphone 应用程序中使用了它,一切都很好,但是现在我尝试在我的 ipad 上实现它,我遇到了一些问题。
主要问题是,在 ipad 上,如果您愿意,选择器会显示为“气泡”或“信息窗口”,它指向调用它的位置,如按钮、文本字段等。
下面是一个例子:
您可以看到“信息窗口”指向动物按钮。
在我的应用程序中,我有 4 个不同的按钮。2 个位于屏幕顶部,2 个位于屏幕底部。
那些在底部的人,很好地调用了选择器,选择器出现在指向他们的按钮的顶部。
但是,屏幕顶部的那些(几乎就像图像中的那个)当他们调用选择器时,选择器在屏幕上显示得更低,并且不应该指向它们......
我的意思是我希望出现在指向它们的按钮下方(如图所示),但它们几乎位于屏幕中央,无处可去。
有任何想法吗?以前有人经历过吗?
编辑
一开始,我在按钮操作中调用 ActionSheetPicker,如下所示:
- (IBAction)selectTopic:(UIControl *)sender {
[ActionSheetStringPicker showPickerWithTitle:NSLocalizedString(@"CHOOSE_TOPIC", nil) rows:self.topics initialSelection:self.selectedIndex target:self successAction:@selector(topicWasSelected:element:) cancelAction:@selector(actionPickerCancelled:) origin:sender];
//when user picks a new topic we clean the titleField to make sure selected title of previous topic doesnt mix up with new topic
titleField.text = @"";
}
现在我试图这样称呼它:
- (IBAction)selectTopic:(UIControl *)sender {
ActionSheetStringPicker *thePicker = [[ActionSheetStringPicker alloc] initWithTitle:NSLocalizedString(@"CHOOSE_TOPIC", nil) rows:self.topics initialSelection:self.selectedIndex target:self successAction:@selector(topicWasSelected:element:) cancelAction:@selector(actionPickerCancelled:) origin:sender];
thePicker.presentFromRect = topicField.frame;
[thePicker showActionSheetPicker];
//when user picks a new topic we clean the titleField to make sure selected title of previous topic doesnt mix up with new topic
titleField.text = @"";
}
topicField 是我的 TextField。
可悲的是结果是一样的。即使现在我正在指定我希望箭头指向的位置,选择器也被称为向下 300 像素。
奇怪的是,即使有另一个比前一个低一点的按钮,选择器又正好下降了 300 像素。
编辑2
在注意到选择器向下显示 300 像素后,我决定手动使其显示向上 300 像素,以准确指向我的按钮。
我使用了以下代码:
- (IBAction)selectTopic:(UIControl *)sender {
//[ActionSheetStringPicker showPickerWithTitle:NSLocalizedString(@"CHOOSE_TOPIC", nil) rows:self.topics initialSelection:self.selectedIndex target:self successAction:@selector(topicWasSelected:element:) cancelAction:@selector(actionPickerCancelled:) origin:sender];
ActionSheetStringPicker *thePicker = [[ActionSheetStringPicker alloc] initWithTitle:NSLocalizedString(@"CHOOSE_TOPIC", nil) rows:self.topics initialSelection:self.selectedIndex target:self successAction:@selector(topicWasSelected:element:) cancelAction:@selector(actionPickerCancelled:) origin:sender];
CGRect pickerFrame = topicField.frame;
pickerFrame.size.height -= 300;
thePicker.presentFromRect = pickerFrame;
[thePicker showActionSheetPicker];
//when user picks a new topic we clean the titleField to make sure selected title of previous topic doesnt mix up with new topic
titleField.text = @"";
}
令人惊讶的是,按钮再次出现在向下 300 像素的相同位置。我开始相信这可能不是改变选择器位置的属性。
有任何想法吗 ?