UIAlertView 不显示、屏幕变灰
SvenFang
票 在 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(response:) name:url object:nil]; 的回调方法response里面弹出UIAlertView,当执行到该代码时,屏幕变灰,但是UIAlertView没有出现,背景按钮均不可点击,输出得到UIAlertView对象的centre x和y均为0 ,alpha为1,等高人指点,下面是response方法的代码和屏幕截图 - (void)response:(NSNotification *)notification
{
if (isStop == ) {//数据超时后,不作处理
return;
}
if (isStop == ) {
[_timer invalidate];
isStop = ;
}
//停止等待控件
[spinner performSelectorOnMainThread:@selector(stopAnimating) withObject:nil waitUntilDone:NO];
[spinner removeFromSuperview];
CommentXMLParser *commentXML=[notification object];
// if([commentXML.responseDict objectForKey:@"return_result"]!=nil){
//
// NSLog(@"请求4001的返回---%@",[commentXML.responseDict objectForKey:@"return_result"]);
//
// if([[commentXML.responseDict objectForKey:@"return_result"] isEqualToString:RETURN_NO])
// {
// //这里只指网络失败
// cmd = commentXML.returnHeader.cmd;
// [self performSelectorOnMainThread:@selector(showDisconeect) withObject:nil waitUntilDone:NO];
// }
// }
if(commentXML.done){ //如果有数据返回
if([commentXML.returnHeader.rspcode isEqualToString:RESPONSE_SUCCESS])
{//正确返回 //解析协议
if( [commentXML.returnHeader.cmd isEqualToString:B2B00004001])
{
score = [commentXML.responseDict objectForKey:@"integral_all"];
score_can_use = [commentXML.responseDict objectForKey:@"integral_able"];
balance = [commentXML.responseDict objectForKey:@"balance"]; [self performSelectorOnMainThread:@selector(viewUpdateBaseInfo) withObject:nil waitUntilDone:NO];
}
else if([commentXML.returnHeader.cmd isEqualToString:B2B00004017])
{
gift_card_balance = [commentXML.responseDict objectForKey:@"balance"];
[self performSelectorOnMainThread:@selector(viewUpdateBaseInfo) withObject:nil waitUntilDone:NO];
}
else if([commentXML.returnHeader.cmd isEqualToString:B2B00004002])
{
[[NSNotificationCenter defaultCenter] postNotificationName:@"Settlement" object:commentXML.responseDict];
[self performSelectorOnMainThread:@selector(closePayTool) withObject:nil waitUntilDone:NO];
}
else{
NSAssert(true, @"非法协议,本处理函数只处理4001,4017, 4002协议", nil);
}
}else{//如果业务失败
NSLog([commentXML.returnHeader.cmd stringByAppendingString:@"业务失败, 失败原因:%@"], [commentXML.headerDict objectForKey:@"rspdesc"]); //todo 提示业务失败, 类似android的toast效果
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"提示" message:[commentXML.headerDict objectForKey:@"rspdesc"] delegate:nil cancelButtonTitle:@"确定" otherButtonTitles: nil];
[alert show];
[alert release];
// [OMGToast showWithText:[commentXML.headerDict objectForKey:@"rspdesc"] bottomOffset:10 duration:5];
}
} 评论 () • 分享 • 链接 • --  Alert的delegate设置了吗? – 吴复 --
1个答案 票 数
davidzhang
票 在这里面我建议你这样做,将下面这段代码 //todo 提示业务失败, 类似android的toast效果
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"提示" message:[commentXML.headerDict objectForKey:@"rspdesc"] delegate:nil cancelButtonTitle:@"确定" otherButtonTitles: nil];
[alert show]; 改为 [alert performSelectorOnMainThread:@selector(show) withObject:nil waitUntilDone:YES]; 如果还是不明白,可以参考这里http://www.gowhich.com/blog/206

转:http://www.dewen.org/q/5474

05-15 00:33