我一直在提高警报视图,所以我也可以在屏幕上安装键盘。我只是通过抓住警报的框架并在我已经显示警报之后更改Y来执行此操作,以便框架变量是合法的。这在模拟器上工作正常,但是当我在硬件上执行此操作时,警报从正确的位置开始,但几乎立即跳到它的原始垂直中心位置。 UIAlertView位置是一个固定的东西,根据可用性指南不应该改变,或者我只是做错了什么?
谢谢!
答案 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 - 即:警报处于活动状态时,您通常不会执行任何其他用户输入吗?如果是这种情况,那你为什么需要键盘的可见性呢?