2

更新:簡単な解決策を見つけました。あることを知りました!

のサブビューとして追加したというUIViewサブクラスがありますが、 に触れても(デフォルトでは) テキスト ビューにフォーカスしません。tipBalloonUITextViewtipBalloontipBalloon.userInteractionEnabled = YES

tipBalloonをタッチすると、そのタッチが に転送されるようにするにはどうすればよいUITextViewですか? これは自動的に起こるべきではありませんか?

次に例を示します。

- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    UITextView *payTextView = [[UITextView alloc] initWithFrame:CGRectMake(5.0f, 30.0f, 180.0f, 100.0f)];
    [window addSubview:payTextView];

    UIView *tipBalloon = [[UIView alloc] initWithFrame:CGRectMake(6.0f, 10.0f, 100.0f, 30.0f)];
    tipBalloon.backgroundColor = [UIColor orangeColor];
    [payTextView addSubview:tipBalloon];
    [tipBalloon release];

    window.backgroundColor = [UIColor brownColor];
    [window makeKeyAndVisible];
    return YES;
}
4

3 に答える 3

3

更新: より簡単な解決策は、単に設定することtipBalloon.userInteractionEnabled = NOです。これにより、 はtipBalloonすべてのタッチを無視し、 に渡されますUITextViewWWDC 2011 のビデオ Advanced Scroll View Techniquesを見ながら、@elizablockからこのテクニックを学びました。

@dredful に基づくソリューションを次に示します (少し整理しただけです)。の直前に次のコード ブロックを追加します[tipBalloon release];

// Focus payTextView after touching payTextExample.
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:
                                     payTextView action:@selector(becomeFirstResponder)];
[tipBalloon addGestureRecognizer:singleTap];
[singleTap release];
于 2011-06-04T01:33:42.720 に答える
1

私があなたの質問を直接理解している場合、あなたはとの相互作用を登録する必要がありますUIView。の場合、UIViewおそらくUITapGestureRecognizerあなたにを追加するのが最善ですtipBalloon

tipBalloonあなたの中にあなた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];
}

tipBalloonこれにより、 UIViewにタップが追加されます。タップが起動するUITextViewと、をファーストレスポンダーとして設定できます。

于 2011-06-03T00:30:14.297 に答える
1

これがUIViewtextView のサブビューである場合は、呼び出すことができるはずです[tipBalloon.superview becomeFirstResponder]

于 2011-06-02T23:42:25.917 に答える