背景中的iPhone/iPod按钮剪切到UIAlertView文本框
当我在UIAlertView的文本框中键入时,背景中的ImageButton开始剪切。只有当文本接近图像时才会发生这种情况 alertview的代码如下所示:背景中的iPhone/iPod按钮剪切到UIAlertView文本框,iphone,objective-c,image,uialertview,Iphone,Objective C,Image,Uialertview,当我在UIAlertView的文本框中键入时,背景中的ImageButton开始剪切。只有当文本接近图像时才会发生这种情况 alertview的代码如下所示: UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"... number" message:nil
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"... number"
message:nil
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles:@"Ok", nil];
[alert setAlertViewStyle:UIAlertViewStylePlainTextInput];
[[alert textFieldAtIndex:0] setKeyboardType:UIKeyboardTypeNumberPad];
[[alert textFieldAtIndex:0] becomeFirstResponder];
[alert setTag:1];
[alert setOpaque:true];
[alert show];
//EDIT
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (alertView.tag == 2)
{
NSString* title = [alertView buttonTitleAtIndex:buttonIndex];
if ([title isEqualToString:@"Cancel"])
{
[self doSomething1];
}
if([alertView.title isEqualToString:@"Are you sure?"] && [title isEqualToString:@"YES"])
{
[self doSomething2];
}
}
}
- (BOOL)alertViewShouldEnableFirstOtherButton:(UIAlertView *)alertView
{
if (alertView.tag == 1){
NSString *inputText = [[alertView textFieldAtIndex:0] text];
if( [inputText length] == 10 )
{
NSUserDefaults* def = [NSUserDefaults standardUserDefaults];
[def setObject:inputText
forKey:@"FIELD"];
[def synchronize];
return YES;
}
else
{
return NO;
}
}
return YES;
}
我尝试将其设置为不透明,尝试查找z索引值,还尝试将图像缩小到所需的最小值。截图没有帮助。这仅在iOS 7中发生。UIAlertView不会与其他视图控制器显示在同一UIWindow中。它们显示在自己的UI窗口中,窗口级别为
UIWindowLevelAlert
。另一个窗口是透明的(主要是透明的),在主窗口的顶部进行渲染。这使得UIAlertView对象无法与屏幕上的其他视图交互。不要修改基础UIView类中的任何属性
上面显示的代码有if(alertView.tag==1)
和if(alertView.tag==2)
,但它只创建标记值为1的UIAlertView。是否有其他地方正在创建第二个警报?您是否可能在第一个警报完成其消失动画之前显示第二个警报?众所周知,这会导致图形撕裂
可以从UIAlertView的-drawRect:
方法中调用委托方法-alertViewShouldEnableFirstOtherButton:
。绘制方法必须非常快,以避免造成图形撕裂。您将调用执行磁盘写入操作的NSUserDefaults-synchronize
。除了确定响应值外,您不应该在-alertViewShouldEnableFirstOtherButton:
方法中执行任何操作。如果希望收到文本字段更改的通知,请将自己指定为UITextFieldDelegate,并实现-textField:shouldChangeCharactersRange:replacementString:
。该方法应该可以安全地从调用NSUserDefaults-synchronize
作为附加提示,您可以使用 我在我的应用程序中使用这种类型的警报视图,在我这方面没有问题,您是否正在使用图像视图或后面的任何其他进程?您好。不,我不是。图像已通过序列图像板设计器加载。用户键入时未访问图像。您是否已实现UIAlertView委托?如果已实现,您在该过程中执行了什么操作?因为您的行为非常奇怪,所以在屏幕上显示alert view时,后面发生了一些事情。如果可能的话,请添加更多的代码以供参考。一个演示该问题的独立示例项目可能会很有用。