2014-10-20 185 views
1

我正在構建一個自定義鍵盤並向其添加圖像的滾動視圖。我正在嘗試檢測水龍頭,但它不起作用。有什麼建議麼?我曾嘗試向滾動視圖中的UIButton添加一個動作,但沒有運氣。此代碼在滾動視圖中顯示圖像,但不會檢測到水龍頭。代碼如下iOS鍵盤擴展檢測抽頭

@interface KeyboardViewController(){ 
    NSMutableArray *_picHolderArray; 

    } 
    @property (nonatomic, strong) UIButton *nextKeyboardButton; 
    @property (nonatomic, strong) UIScrollView *keyboardBackground; 
@end 

@implementation KeyboardViewController 

- (void)updateViewConstraints { 
    [super updateViewConstraints]; 
     // Add custom view sizing constraints here 
} 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    self.keyboardBackground.delegate = self; 
    // Perform custom UI setup here 
    self.nextKeyboardButton = [UIButton buttonWithType:UIButtonTypeSystem]; 

    [self.nextKeyboardButton setTitle:NSLocalizedString(@"Next Keyboard", @"Title for 'Next Keyboard' button") forState:UIControlStateNormal]; 
    [self.nextKeyboardButton sizeToFit]; 
    self.nextKeyboardButton.translatesAutoresizingMaskIntoConstraints = NO; 

    [self.nextKeyboardButton addTarget:self action:@selector(advanceToNextInputMode) forControlEvents:UIControlEventTouchUpInside]; 

    [self.view addSubview:self.nextKeyboardButton]; 

    NSLayoutConstraint *nextKeyboardButtonLeftSideConstraint = [NSLayoutConstraint constraintWithItem:self.nextKeyboardButton attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeft multiplier:1.0 constant:0.0]; 
    NSLayoutConstraint *nextKeyboardButtonBottomConstraint = [NSLayoutConstraint constraintWithItem:self.nextKeyboardButton attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeBottom multiplier:1.0 constant:0.0]; 
    [self.view addConstraints:@[nextKeyboardButtonLeftSideConstraint, nextKeyboardButtonBottomConstraint]]; 
    UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation]; 
    CGRect frame; 

    if(UIDeviceOrientationIsLandscape(orientation)) 
     frame = CGRectMake(0, 0, 480, 162); 
    else 
     frame = CGRectMake(0, 0, 320, 216); 

    self.keyboardBackground = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, 400, 180)]; 



    _picHolderArray = [[NSMutableArray alloc]init]; 
    UIImage* backgroundImage =[[UIImage imageNamed:@"keyBack.jpg"] 
           resizableImageWithCapInsets:UIEdgeInsetsMake(100, 0, 0, 0) ]; 
    UIGraphicsBeginImageContextWithOptions(self.keyboardBackground.bounds.size, NO, 0.0); 
    [backgroundImage drawInRect:self.keyboardBackground.bounds]; 
    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    self.keyboardBackground.backgroundColor = [UIColor colorWithPatternImage:newImage]; 
    int _x = 0; 
    for (int i = 0; i < 5; i++) { 
     //load button size and pass in array for titles 
     UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(_x,45, 200, 120)]; 
     imageView.image = [UIImage imageNamed:@"testImage.jpg"]; 
     [imageView setClipsToBounds:YES]; 
     UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapGestureCaptured:)]; 
     [imageView addGestureRecognizer:singleTap]; 
     [imageView setMultipleTouchEnabled:YES]; 
     [imageView setUserInteractionEnabled:YES]; 

     // Create colored border using CALayer property 
     [[imageView layer] setBorderColor: 
     [[UIColor colorWithRed:(5.0/255.0) green:(108.0/255.0) blue:(182.0/255.0) alpha:1] CGColor]]; 
     [[imageView layer] setBorderWidth:1.75]; 
     [_picHolderArray addObject:imageView]; 

     [self.keyboardBackground addSubview:_picHolderArray[i]]; 
     _x += imageView.frame.size.width + 60; 
    } 

    //self.shell.showsHorizontalScrollIndicator = NO; 
    self.keyboardBackground.autoresizesSubviews = YES; 
    //self.keyboardBackground.pagingEnabled = YES; 
    //self.keyboardBackground.scrollEnabled = YES; 

    self.keyboardBackground.contentSize = CGSizeMake(_x, 180); 


    [self.view addSubview:self.keyboardBackground]; 
} 
- (void)singleTapGestureCaptured:(UITapGestureRecognizer *)gesture 
{ 
    UIView *tappedView = [gesture.view hitTest:[gesture locationInView:gesture.view] withEvent:nil]; 
    NSLog(@"Touch event on view: %@",[tappedView class]); 
} 

/********************************************************************** 
* 
* scrollViewDidScroll: allows us to know which camera is viewed. 
* 
**********************************************************************/ 
#pragma mark - ScrollView Delegates 
- (void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    int _index = ((int)(scrollView.contentOffset.x)/320); 
    NSLog(@"%d",_index); 
} 
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView{ 
    NSLog(@"HEEERE"); 
} 


- (void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated 
} 

- (void)textWillChange:(id<UITextInput>)textInput { 
    // The app is about to change the document's contents. Perform any preparation here. 
} 

- (void)textDidChange:(id<UITextInput>)textInput { 
    // The app has just changed the document's contents, the document context has been updated. 

    UIColor *textColor = nil; 
    if (self.textDocumentProxy.keyboardAppearance == UIKeyboardAppearanceDark) { 
     textColor = [UIColor whiteColor]; 
    } else { 
     textColor = [UIColor blackColor]; 
    } 
    [self.nextKeyboardButton setTitleColor:textColor forState:UIControlStateNormal]; 
} 

@end 

回答

0

如果您運行該目標,您可以看到鍵盤擴展的NSLog。

你很可能運行你的基本應用程序作爲你的Xcode目標。由於您的調試器然後附加到您的基本應用程序而不是您的擴展,NSLogs將不會在控制檯中看到。