По какой-то причине следующий код не работает:
#import <Foundation/Foundation.h>
@interface UIView (FindUIViewControllerParent)
- (UIViewController *) firstAvailableUIViewController;
- (id) traverseResponderChainForUIViewController;
@end
#import "UIView+FindUIViewControllerParent.h"
@implementation UIView (FindUIViewControllerParent)
- (UIViewController *) firstAvailableUIViewController
{
return (UIViewController *)[self traverseResponderChainForUIViewController];
}
- (id) traverseResponderChainForUIViewController
{
id nextResponder = [self nextResponder];
if ([nextResponder isKindOfClass:[UIViewController class]])
{
return nextResponder;
}
else if ([nextResponder isKindOfClass:[UIView class]])
{
return [nextResponder traverseResponderChainForUIViewController];
}
else
{
return nil;
}
}
@end
parentViewController = [self firstAvailableUIViewController];
firstResponder возвращается как nil, вместо того, чтобы быть родительским контроллером представления (когда я делал это без категории, это работало нормально). Я читал некоторые другие темы, в которых говорится, что нужно внести некоторые изменения в другие параметры связывания в настройках проекта, и я пробовал их, но они все еще не работают. Кто-нибудь может увидеть, что я здесь делаю не так? (этот код почти точно скопирован из другого потока, получившего массу голосов "за").