2016-08-31 4 views
0

私はナビゲーション項目のカスタムタイトルビューにUITextFieldsを持っています。私はそれが右側に触れると、それにも焦点を当てている。私はヒットテストの方法で状況をテストします。ここにデータがあります。navigationItemカスタムタイトルビューのUITextFieldが境界の外側をタッチするとフォーカスが得られるのはなぜですか?

hitbounds field point: {269, 6.5}, bounds:{{0, 0}, {255, 35}}; searchView point: {59, 6.5}, bounds: {{0, 0}, {45, 35}}; searchButton: {58, 11}, bounds: {{0, 0}, {44, 44}} 

フィールドビューには、検索ボタンが含まれている右側の検索ビューが含まれています。

フィールドポイント:{269,6.5}、境界:{{0、0}、{255,35}};
ポイントの境界が明確になっていません。しかし、フィールドが強調表示され、キーボードが表示されます。

とキーボードが表示されたときに最終的に私が見つけ、方法もなぜpointInside:(CGPoint)point withEvent:(UIEvent *)event hitTest:(CGPoint)point withEvent:(UIEvent *)event

と呼ばれていませんか?ありがとう。

答えて

0

私は、ナビゲーションバーは、タッチイベントを盗むし、直接テキストフィールドするタッチイベントをディスパッチ推測Why does UINavigationBar steal touch events?

から手掛かりを得ました。

だから、これが解決策です。それはうまくいく。

@implementation UINavigationBar(Xxxxxx) 

- (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event 
{ 
    UIView *v = [super hitTest:point withEvent:event]; 
    return v == self ? nil: v; 
} 

@end 
関連する問題