在触摸UIView子视图后,如何让UITextView成为FirstFirstResponder?

时间:2011-06-02 22:28:44

标签: iphone cocoa-touch uiview uitextview becomefirstresponder

更新:我找到了simple solution。我知道有一个!

我有一个名为UIView的{​​{1}}子类,我已添加为tipBalloon的子视图,但当我触摸UITextView时,它没有关注文本视图即使tipBalloon(默认情况下)。

如何制作,以便当我触摸tipBalloon.userInteractionEnabled = YES时,触摸会转发到tipBalloon?这不应该自动发生吗?

以下是一个例子:

UITextView

3 个答案:

答案 0 :(得分:3)

更新:更简单的解决方案就是设置tipBalloon.userInteractionEnabled = NO。这会导致tipBalloon忽略任何触摸,然后传递给UITextView。我在观看@elizablock时从WWDC 2011 video Advanced Scroll View Techniques学习了这项技术。

这是基于@dredful的解决方案(只是整理了一下)。在[tipBalloon release];之前添加以下代码块:

// Focus payTextView after touching payTextExample.
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:
                                     payTextView action:@selector(becomeFirstResponder)];
[tipBalloon addGestureRecognizer:singleTap];
[singleTap release];

答案 1 :(得分:1)

如果UIView是textView的子视图,您应该可以致电[tipBalloon.superview becomeFirstResponder]

答案 2 :(得分:1)

如果我直接理解您的问题,您需要注册与UIView的互动。对于UIView,最好向UITapGestureRecognizer

添加tipBalloon

tipBalloon的{​​{1}}内,您可以放置​​:

viewDidAppear:

[self addGestureRecognizerToUIView:self.view];

中有这些方法
tipBalloon

这会为您的- (void)addGestureRecognizerToUIView:(id)thisUIView { // Single Tap UITapGestureRecognizer *thisTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)]; thisTap.numberOfTapsRequired = 1; [thisUIView addGestureRecognizer:thisTap]; [thisTap release]; } - (void)handleTap:(UITapGestureRecognizer *)gesture { [yourUITextView becomeFirstResponder]; } UIView添加点按。当点击触发时,它可以将tipBalloon设置为第一响应者。