我可以移动UIAlertView吗?

时间:2009-06-24 18:06:12

标签: iphone uialertview

我一直在提高警报视图,所以我也可以在屏幕上安装键盘。我只是通过抓住警报的框架并在我已经显示警报之后更改Y来执行此操作,以便框架变量是合法的。这在模拟器上工作正常,但是当我在硬件上执行此操作时,警报从正确的位置开始,但几乎立即跳到它的原始垂直中心位置。 UIAlertView位置是一个固定的东西,根据可用性指南不应该改变,或者我只是做错了什么?

谢谢!

3 个答案:

答案 0 :(得分:22)

您正在尝试使用哪种操作系统?我得到了这个在OS 3.0模拟器和OS 3.0设备上工作:

UIAlertView * alert = [ [ UIAlertView alloc ] initWithTitle:@"Alert" message:@"Alert" 
                        delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil ];

alert.transform = CGAffineTransformTranslate( alert.transform, 0.0, 100.0 );

[ alert show ];

CGAffineTransformTranslate有三个参数:现有变换,x变换和y变换。在我使用的示例中,警报视图比正常情况高出100个像素。试一试,看看会发生什么。

另外,我很确定你可以在显示提醒之前修改帧,因为它可能会将init中的提醒帧设置为默认情况下整个屏幕的中心。

答案 1 :(得分:2)

因为iOS4移动UIAlertViews变得棘手。我注意到如果你在UIAlertView上添加一个UITextField子视图,在iOS4上警报就会向上移动,这样键盘就不会重叠了。这不会发生< iOS4的。

此外,我注意到即使在调用show之后,警报的框架也未初始化,因此没有简单的编程方式来执行相对CGAffineTransformation。唯一的解决方案是根据操作系统版本进行条件转换。

对我而言,这看起来像是对随时更改的UIAlertViews的无证行为进行线程化。我认为Apple不会让我们使用警报而不是文本和按钮(即使他们自己的应用程序违反了这个规则)。

我将为这种情况开始构建我自己的自定义警报。

答案 2 :(得分:1)

警告不是modal - 即:警报处于活动状态时,您通常不会执行任何其他用户输入吗?如果是这种情况,那你为什么需要键盘的可见性呢?