Tengo un problema de implementación con un proyecto que usa MKStoreKit. Estoy tratando de implementar un UIAlertView
con varias opciones de compra.iOS Tipos de punteros de bloque incompatibles problema
Este es el código donde hago varias cosas y acceder a UIAlertView
:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
if(FALSE == payWallFlag)
{
// Display Alert Dialog
UIAlertView *message = [[UIAlertView alloc] initWithTitle:@"Subscription Options"
message:@"You do not have an active subscription. Please purchase one of the options below."
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles:nil];
[message addButtonWithTitle:@"7 Day Subscription $0.99"];
[message show];
return FALSE;
} else if(TRUE == payWallFlag)
{
// Load content
}
}
Este es el alertView
físico con el código que estoy tratando de llamar:
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
NSString *title = [alertView buttonTitleAtIndex:buttonIndex];
if([title isEqualToString:@"Cancel"])
{
NSLog(@"Cancel Button was selected.");
}
else if([title isEqualToString:@"7 Day Subscription $0.99"])
{
NSLog(@"7 Day Subscription button pressed.");
//Buy a 7 day subscription
if([SKPaymentQueue canMakePayments]) {
[[MKStoreManager sharedManager] buyFeature:kFeatureAId onComplete:^(NSString* purchasedFeature)
{
NSLog(@"Purchased: %@", purchasedFeature);
// Send an alert to the user
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Purchase Successful"
message:@"Thank you. You have successfully purchased a 7 Day Subscription."
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert autorelease];
[alert show];
// Show the user the content now
payWallFlag = TRUE;
return TRUE;
}
onCancelled:^
{
// Send an alert to the user
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Purchase Failed"
message:@"Unfortunately you have cancelled your purchase of a 7 Day Subscription. Please try again."
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert autorelease];
[alert show];
// Block the content again
payWallFlag = FALSE;
}];
}
else
{
NSLog(@"Parental control enabled");
// Send an alert to the user
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Purchase Failed"
message:@"Unfortunately Parental Controls are preventing you from purchasing a subscription. Please try again."
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert autorelease];
[alert show];
// Block the content again
payWallFlag = FALSE;
}
}
}
La cuestión es Recibo el siguiente mensaje de error de Xcode en el UIAlertView
:
tipos de puntero de bloque incompatibles enviar 'int (^) (NSString *)' a parámetro de tipo 'vacío (^) (NSString *)'
Parece que los problemas son: onComplete:^(NSString* purchasedFeature)
y onCancelled:^
pero no tengo ni idea Cómo arreglar esto.