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