gpt4 book ai didi

ios - UIPopoverController 出现在错误的位置

转载 作者:可可西里 更新时间:2023-11-01 03:27:31 26 4
gpt4 key购买 nike

所以我花了一些时间寻找这个问题的答案,但到目前为止还没有找到任何东西。

我正在尝试通过 UIInputAccessoryView 上的按钮显示弹出窗口。我想从中显示弹出窗口的 UIBarButtonItem 具有自定义 View ,因此我可以使用图像。我这样创建按钮:

 buttonImage=[UIImage imageNamed:@"tags.png"];
aButton=[UIButton buttonWithType:UIButtonTypeCustom];
[aButton setImage:buttonImage forState:UIControlStateNormal];
aButton.frame=CGRectMake(0.0, 0.0, buttonImage.size.width, buttonImage.size.height);
UIBarButtonItem* compButton2=[[UIBarButtonItem alloc]initWithCustomView:aButton];
[aButton addTarget:self action:@selector(tagIt:) forControlEvents:UIControlEventTouchUpInside];

当需要显示弹出窗口时,我会这样做:

CGRect tRect=[((UIButton*)sender) convertRect:((UIButton*)sender).frame toView:self.notePlainText];
NSLog(@"TagIt tRect: %f %f %f %f", tRect.origin.x, tRect.origin.y, tRect.size.width, tRect.size.height);
[self.popoverController presentPopoverFromRect:tRect inView:self.notePlainText permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];

但我得到的是:

enter image description here

弹出框看起来不错,但它应该出现在第一个按钮上时出现在第二个按钮上。

然后我发现了这个问题:UIBarButtonItem with custom image and no border我想,“啊,如果我从 barbuttonitem 显示弹出窗口而不是这样做,它可能会更好。代码子类 UIBarButtonItem 是为了有一个带有图像而不是文本的按钮,并正确地表示 barbuttonitem当调用操作时。这允许我使用 ...presentPopoverFromBarButtonItem...

所以我尝试了上述问题中第二个答案中的代码,得到了更好的结果。弹出窗口按我的意愿指向按钮,但如果设备的方向不是纵向且按钮位于底部,则弹出窗口显示方向错误:

Popover with wrong orientation

最后,我要指出的是,我在程序的其他地方有其他条形按钮项目,它们不在 UIInputAccessoryViews 中,它们可以正常显示且没有问题。它似乎只发生在输入附件 View 中。

这只是在:隐藏和显示键盘似乎使这项工作更好一些。查看按钮的框架 (CGRect) 数据,它不会在旋转之间改变,除非它被隐藏并带回。这是错误吗?

所以..我的问题是:从嵌入在 ui 附件 View 中的条形按钮项呈现弹出窗口的首选最佳实践方法是什么?

非常感谢。

最佳答案

所以我使用以下笨拙的代码使它工作,尽管如果有人能告诉我为什么我必须这样做(或者为什么我不应该这样做),我将非常感激。

CGRect r=((UIButton*)sender).frame;
CGRect tRect=[((UIButton*)sender) convertRect:((UIButton*)sender).frame toView:self.view];
tRect.origin.x=r.origin.x;

[self.popoverController presentPopoverFromRect:tRect inView:self.view permittedArrowDirections:UIPopoverArrowDirectionDown animated:YES];

关于ios - UIPopoverController 出现在错误的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6629813/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com