• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 更改 UIView 框架结束触摸事件

[复制链接]
菜鸟教程小白 发表于 2022-12-11 16:55:44 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我有一个自定义 UIView

self.commentView = [[[NSBundle mainBundle] loadNibNamed"commentView" owner:self options:nil] firstObject];
self.commentView.userInteractionEnabled = YES;
CGRect frame = CGRectMake(0, [[UIScreen mainScreen]bounds].size.height, [[UIScreen mainScreen]bounds].size.width, 52);
[self.commentView setFrame:frame];
[self addSubview:self.commentView];

添加手势识别器

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self actionselector(tapping)];
[self.commentView addGestureRecognizer:tap];

自定义 View 包含一个 UITextView。我注册键盘通知并在键盘出现时更改我的自定义 View 框架

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selectorselector(keyboardAppeared
                                             name:UIKeyboardDidShowNotification
                                           object:nil];

 - (void)keyboardAppearedNSNotification*)notificationn{
     NSDictionary* keyboardInfo = [notificationn userInfo];
     NSValue* keyboardFrameBegin = [keyboardInfo valueForKey:UIKeyboardFrameEndUserInfoKey];
     CGRect keyboardFrameBeginRect = [keyboardFrameBegin CGRectValue];

     CGRect frame = self.commentView.frame;
     frame.origin.y = (keyboardFrameBeginRect.origin.y - frame.size.height);

     [UIView animateWithDuration:.1f animations:^{
         [self.commentView setFrame:frame];
         self.commentView.alpha = 1.0f;
     }];

     keyboard = keyboardFrameBeginRect.origin.y;

 }

在我的“点击”方法中,我有一个 NSLog。当我最初添加 commentView 并点击 View 时,触摸工作并调用 tapping。在显示键盘并将 commentView 的框架移到键盘上方后,不再调用“轻敲” - 触摸事件停止。

我还有一个关于何时关闭键盘的通知。在这种方法中,我将框架设置回原来的样子。触摸再次开始起作用。

编辑 这就是我添加 commentView 的方式。上面的 addSubview: 正在测试:

 - (void) showCommentView{
     CGRect frame = CGRectMake(0, [[UIScreen mainScreen]bounds].size.height-52, [[UIScreen mainScreen]bounds].size.width, 52);
     [self.commentView setFrame:frame];
     if (![self.subviews containsObject:self.commentView]) {
         [self addSubview:self.commentView];
     }
     [self.commentView.commentTextView becomeFirstResponder];

     CGRect framer = [self convertRect:self.commentView.postButton.frame fromView:self.commentView];
     NSLog(@"SUPERVIEW: %f", framer.origin.y);
 }

我注释掉 commentTextView becomeFirstResponder 行,然后点击就可以了。如果我离开这一行,将调用 keyboardAppeared ,并且一旦框架更改,点击就不再起作用。所以我认为 commentView 的框架实际上并没有改变。



Best Answer-推荐答案


设置commentViewcolor。我认为当键盘出现时您的commentView 框架没有正确调整大小。

关于ios - 更改 UIView 框架结束触摸事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38258055/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap