Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
背景中的iPhone/iPod按钮剪切到UIAlertView文本框_Iphone_Objective C_Image_Uialertview - Fatal编程技术网

背景中的iPhone/iPod按钮剪切到UIAlertView文本框

背景中的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的文本框中键入时,背景中的ImageButton开始剪切。只有当文本接近图像时才会发生这种情况

alertview的代码如下所示:

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时,后面发生了一些事情。如果可能的话,请添加更多的代码以供参考。一个演示该问题的独立示例项目可能会很有用。