我创建了一个准系统 iOS 应用程序,它向窗口添加了一个 UIScrollView(没有 ViewControllers 或 UIViews——我只是这样做是为了看看我是否能理解发生了什么。)
我想要的只是在摇晃设备时通知 UIScrollView。
我将 UIScrollView 子类化以实现 canBecomeFirstResponder 方法:
#import "SampleScrollView.h"
@implementation SampleScrollView
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
}
return self;
}
- (BOOL)canBecomeFirstResponder
{
return YES;
}
在我的 AppDelegate 中,我创建了一个 SampleScrollView 对象,添加到窗口中,然后尝试将其设置为第一响应者:
#import "SampleScrollView.h"
@implementation ResponderTestAppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
CGRect thisFrame = [[self window] bounds];
SampleScrollView *myScrollView = [[SampleScrollView alloc] initWithFrame:thisFrame];
// Set scrollview to be the first responder
BOOL success = [myScrollView becomeFirstResponder];
if (success)
{
NSLog(@"myScrollView is first responder");
}
else
{
NSLog(@"Not first responder.");
}
这是一个高度简化的示例,但由于某种原因,我无法让应用程序将 SampleScrollView 对象报告为第一响应者。我确定我错过了一些非常简单的东西,对吧?