我正在使用SDCAlertView的pod,找到here来实现一系列带有图像和其他功能的警报消息。警报以音频事件为中心(即插入或移除耳机),有时需要在没有点击警报按钮的情况下被解除。
我致电dismissWithClickedButtonIndex: animated:
后出现问题。电话本身似乎工作正常,但一旦警报消失,下一个UIView就会变得没有反应。
此回调中发生 dismissWithClickedButtonIndex: animated:
调用的一个实例:
- (void) audioRouteChangeListener: (NSNotification *)notification {
// Initiallize dictionary with notification and grab route change reason
NSDictionary *interuptionDict = notification.userInfo;
NSInteger routeChangeReason = [[interuptionDict valueForKey:AVAudioSessionRouteChangeReasonKey] integerValue];
switch (routeChangeReason) {
// Sensor inserted
case AVAudioSessionRouteChangeReasonNewDeviceAvailable:
// Dismiss alert if any and begin collection
if (self.sensorAlert != nil) {
[self.sensorAlert dismissWithClickedButtonIndex:0 animated:YES];
self.sensorAlert = nil;
}
// **** DEBUG ****
NSLog(@"Sensor INSERTED");
break;
default:
NSLog(@"Blowing it in- audioRouteChangeListener with route change reason: %ld", (long)routeChangeReason);
break;
}
}
我添加了alertView处理程序didDismissWithButtonIndex:
,并确认解雇调用正在进行:
- (void) alertView:(SDCAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
switch (buttonIndex) {
case 0:
// Checking for dismiss
NSLog(@"Made it to standard dismiss\n");
break;
default:
NSLog(@"Uncaught dismiss\n");
break;
}
}
SDCAlertView实例是NSObject子类的一部分,而不是UIViewController,我猜这可能是问题的原因,但我认为clickedButtonAtIndex
调用会产生相同的效果,但它会不
我像这样设置了SDCAlertView:
// Set up alert View for a disconnected sensor
self.sensorAlert = [[SDCAlertView alloc]
initWithTitle:@"No Sensor"
message:@"Please insert the GSF sensor and try again."
delegate:self
cancelButtonTitle:nil
otherButtonTitles:@"Try Again", nil];
[alertImageView setTranslatesAutoresizingMaskIntoConstraints:NO];
[self.sensorAlert.contentView addSubview:alertImageView];
[alertImageView sdc_horizontallyCenterInSuperview];
[self.sensorAlert.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-[alertImageView]|"
options:0
metrics:nil
views:NSDictionaryOfVariableBindings(alertImageView)]];
非常感谢任何帮助解决这个问题。