辞去 ScrollView Touch 上的第一响应者

Posted

技术标签:

【中文标题】辞去 ScrollView Touch 上的第一响应者【英文标题】:Resign First Responder on ScrollView Touch 【发布时间】:2011-04-07 16:16:28 【问题描述】:

如何在 ScrollView 触摸事件中隐藏键盘...

场景是这样的……

->视图->滚动视图->文本域

我想在触摸滚动视图时隐藏键盘。我试图覆盖滚动视图的类,但我仍然做不到。

【问题讨论】:

我认为您需要使用委托。 还有谁能帮我解决这个问题??? 【参考方案1】:

这样做会有所帮助:

@interface MyClass <UIScrollViewDelegate> 


@implementation

- (void)viewDidLoad 
  yourScrollView.delegate = self;


- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView 
  [myTextField resignFirstResponder];

如果你真的想处理触摸事件,那么你需要继承 UIScrollView 并重写该方法:

- (BOOL)touchesShouldBegin:(NSSet *)touches withEvent:(UIEvent *)event inContentView:(UIView *)view 


更多关于UIScrollView touch

【讨论】:

我需要让键盘在触摸时隐藏,而不是在拖动 ScrollView 时...所以有谁能帮我解决这个问题!!! ...willBeginDragging 事件仅在手指拖动时触发,因此不能用于响应点击。【参考方案2】:

这对我有用

在你的 viewController 的 viewDidLoad 方法中

    UITapGestureRecognizer *tapScroll = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapped)];
    tapScroll.cancelsTouchesInView = NO;
    [viewScroller addGestureRecognizer:tapScroll];

其中 viewScroller 是您的滚动条。在窃听方法中,我们有

    - (void) tapped 
        [self.view endEditing:YES];
    

不知道为什么,但上面的方法对我不起作用......即使它应该

【讨论】:

是的,在 iosSDK 中使用手势之后,这是一个很好的解决方案,正如 @Dax 所回答的那样。但是这个问题很早就被问到了,那里没有手势。但是我这边 +1。【参考方案3】:

试试这个:

为滚动视图添加手势识别器,

UITapGestureRecognizer *tapScroll = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapped)];
    tapScroll.cancelsTouchesInView = NO;
    [yourScrollview addGestureRecognizer:tapScroll];
    [tapScroll release];

以(轻敲:)方法退出您的键盘。

【讨论】:

【参考方案4】:

请看一下这个答案,这是我找到的最简单的答案。

UitextField resignFirstResponder does not work in scroll view

【讨论】:

【参考方案5】:
- (BOOL)touchesShouldBegin:(NSSet *)touches withEvent:(UIEvent *)event inContentView:(UIView *)view

    [self.view endEditing:YES];
     return YES;
 

【讨论】:

以上是关于辞去 ScrollView Touch 上的第一响应者的主要内容,如果未能解决你的问题,请参考以下文章

立即响应ScrollView上的子视图的手势

开年第一响--Infortrend普安科技与国亿国际联手 王牌产品GS 1000准备大显于市

如何以编程方式进行一响呼叫以及如何判断我呼叫的线路是不是已关闭?

存储指针并辞去第一响应者后无法重新聚焦 UITextField

当要求 NSView 辞去第一响应者的职务时,如何获得 firstResponder-to-be?

历史上的今天:乔布斯辞去苹果CEO一职;Windows 95 发布