在UITextView类中未调用UIAlertView Delegate方法

时间:2014-07-10 04:29:13

标签: ios objective-c uitextview uialertview uialertviewdelegate

我想在didDismissWithButtonIndex课程上打电话给UITextView但是没有打电话。 我还在UIAlertViewDelegate文件和MyViewcontroller.h方法上实施[alert setDelegate:self]

那么可以在UIAlertView Class中调用UITextView委托方法吗?

+ (void)deleteTextr:(UITapGestureRecognizer *)gestureRecognizer
{
    if (gestureRecognizer.state == UIGestureRecognizerStateBegan)
    {
        UIAlertView *alert  = [[UIAlertView alloc]initWithTitle:@"" message:@"Delete Text !!!!" delegate:self cancelButtonTitle:@"Delete" otherButtonTitles:@"No", nil];
        [alert setDelegate:self];
        [alert show];
    }
}
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex
{
    if(buttonIndex == 1)
    {
        [self removeFromSuperview];
    }
}

2 个答案:

答案 0 :(得分:3)

只需将委托方法更改为类方法。像这样:

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex;

// - 更改为+

+ (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex;

答案 1 :(得分:2)

deleteTextr:是一种类方法。在类方法的上下文中,self只是对类的引用。要使用UIAlertViewDelegate协议,您需要将类的实例分配给UIAlertView实例的委托属性,该属性只能在实例方法中完成。

阅读this以更好地掌握上述概念。