Unë kam nënklasën e UITextField
. Dua të di kur tastiera është e dukshme. Kjo do të më ndihmojë të lëviz të gjithë pamjen lart nëse tastiera po fsheh fushën time të tekstit.
Në nënklasën time unë shtoj vëzhgues si më poshtë:
- (id)initWithCoder:(NSCoder *)aDecoder{
if (self = [super initWithCoder:aDecoder]) {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardIsVisible:) name:UIKeyboardDidShowNotification object:nil];
}
return self;
}
Pres të kap madhësinë e tastierës:
/* Get height when keyboard is visible */
- (void)keyboardIsVisible:(NSNotification*)notification
{
NSDictionary* keyboardInfo = [notification userInfo];
NSValue* keyboardFrameBegin = [keyboardInfo valueForKey:UIKeyboardFrameBeginUserInfoKey];
CGRect keyboardFrameBeginRect = [keyboardFrameBegin CGRectValue];
_keyboardHeight =keyboardFrameBeginRect.size.height;
}
Do të përdor ivar _keyboardHeight
për të vendosur nëse duhet të lëviz tastierën:
/* Move keyboard */
-(void)showKeyboardWithMove {
CGRect screenRect = [[UIScreen mainScreen] bounds];
////CGFloat screenWidth = screenRect.size.width;
CGFloat screenHeight = screenRect.size.height;
if (self.frame.origin.y + self.frame.size.height > screenHeight - _keyboardHeight) {
double offset = screenHeight - _keyboardHeight - self.frame.origin.y - self.frame.size.height;
CGRect rect = CGRectMake(0, offset, self.superview.frame.size.width, self.superview.frame.size.height);
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.3];
self.superview.frame = rect;
[UIView commitAnimations];
}
}
Nga pikëpamja ime e klasës së kontrolluesit unë telefonoj showKeyboardWithMove
:
- (void)textFieldDidBeginEditing:(MyCustomTextField *)textField
{
// Call method for moving control when Keyboard is shown and hides it
[textField showKeyboardWithMove];
}
- (void)textFieldDidEndEditing:(MyCustomTextField *)textField
{
// Call method for returning control when Keyboard is hidden
[textField hideKeyboardWithMove];
}
Problemi është se keyboardIsVisible
nuk është ndezur kur shfaq tastierën për herë të parë. Kështu që unë mendoj se vëzhguesi im nuk është i koduar siç duhet. Ndonje ide?
addObserver
nëviewWillAppear
, vëzhguesi nuk vendoset fare. 02.10.2014