我正在使用一个使用Jonathan Badeen的JLBPartialModal类的新应用程序,这个类试图模仿国家地理公园指南中的界面。
我的问题是,当我尝试在第二个视图中显示键盘时,第一次发生这种情况一切看起来都很好,第二次出现问题,键盘更小但仍然可以使用其原始尺寸。
第一次 http://i.stack.imgur.com/kByhh.png
第二次 http://i.stack.imgur.com/GNhbL.png
我不知道是否有任何方法可以强制第二个视图具有becomeFirstResponder。
希望有任何建议来解决我的问题。
第一个视图
使用IBAction调用视图
-(IBAction)accion:(id)sender{
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
composeViewController *vc = [sb instantiateViewControllerWithIdentifier:@"composeView"];
JLBPartialModal *partialModal = [JLBPartialModal sharedInstance];
partialModal.delegate = vc;
[partialModal presentViewController:vc dismissal:^{
}];
}
第二种观点
该类有 3 个委托,其中一个是 didPresentPartialModalView,我使用这个委托在视图和动画结束后显示键盘:
#pragma mark - Partial modal delegate
- (void)didPresentPartialModalView:(JLBPartialModal *)partialModal
{
self.texto.editable = YES;
[self.texto becomeFirstResponder];
}
然后,当用户触摸关闭按钮时 UITextView 有resignFirstResponder并且使用NSNotificationCenter我知道键盘是隐藏的:
- (void)viewDidLoad
{
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(KeyboardWillHide:) name:UIKeyboardDidHideNotification object:nil];
}
- (IBAction)close:(id)sender
{
self.texto.editable = NO;
[self.texto resignFirstResponder];
}
-(void)KeyboardWillHide:(NSNotification *) notification {
[[JLBPartialModal sharedInstance] dismissViewController];
}
- (BOOL)shouldDismissPartialModalView:(JLBPartialModal *)partialModal
{
return YES;
}
谢谢你。
编辑
最后!
我已经解决了将removeOnCompletion添加到JLBPartialModal.m 中的问题
- (CAKeyframeAnimation *)pullBackAnimation
- (CAKeyframeAnimation *)pushForwardAnimation
像这样:
- (CAKeyframeAnimation *)pullBackAnimation
{
CATransform3D startTransform = [self perspectiveTransform];
CATransform3D endTransform = CATransform3DConcat([self windowScaledTransform], startTransform);
CATransform3D middleTransform = CATransform3DConcat([self windowRotationTransform], startTransform);
CAKeyframeAnimation *anim = [self windowAnimation];
anim.values = @[[NSValue valueWithCATransform3D:startTransform], [NSValue valueWithCATransform3D:middleTransform], [NSValue valueWithCATransform3D:endTransform]];
anim.removedOnCompletion = YES; // Line added
return anim;
}
- (CAKeyframeAnimation *)pushForwardAnimation
{
CATransform3D endTransform = [self perspectiveTransform];
CATransform3D startTransform = CATransform3DConcat([self windowScaledTransform], endTransform);
CATransform3D middleTransform = CATransform3DConcat([self windowRotationTransform], startTransform);
CAKeyframeAnimation *anim = [self windowAnimation];
anim.values = @[[NSValue valueWithCATransform3D:startTransform], [NSValue valueWithCATransform3D:middleTransform], [NSValue valueWithCATransform3D:endTransform]];
anim.removedOnCompletion = YES; // Line added
return anim;
}
有了这个,我确保动画被删除:D