Хотите отклонить UIPickerView в UIView, касаясь снаружи - PullRequest
1 голос
/ 05 августа 2011

Я пытаюсь отклонить UIPickerView, просто прикоснувшись за пределами вида к UIView.Я видел другие посты, такие как , этот , который объясняет, как использовать NotificationCenter для отклонения UIKeyboard при нажатии вне клавиатуры.Я хотел бы знать, есть ли подобный способ сделать то же самое с UIPickerView.Прямо сейчас я использую готовую кнопку внутри UIActionSheet, но мне нравится идея дать пользователю возможность просто щелкнуть за пределами представления.Кроме того, мне известна идея использовать «невидимую кнопку», которая работает примерно так же, я просто искал, чтобы найти более элегантное решение.
Спасибо заранее.

1 Ответ

2 голосов
/ 21 сентября 2011

Я делал это в прошлом, создав пользовательский UIView, а затем переопределив метод pointInside класса UIView. Это метод, который срабатывает каждый раз, когда UIView получает сенсорное уведомление. Когда это происходит, вы можете узнать, было ли прикосновение внутри или за пределами ваших взглядов.

Например, ваш пользовательский UIView может выглядеть так:

CustomTouchUIView.h

#import 

@protocol CustomTouchUIViewDelegate

- (void) uiViewTouched:(BOOL)wasInside;

@end

@interface CustomTouchUIView : UIView 

// Properties
@property (nonatomic, assign) id delegate;

@end

CustomTouchUIView.m

#import "TOTouchUIView.h"

@implementation CustomTouchUIView

#pragma mark - Synthesize
@synthesize delegate;

#pragma mark - Touches
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
{
    if( point.x > 0 && point.x < self.frame.size.width && point.y > 0 && point.y < self.frame.size.height )
    {
        [delegate uiViewTouched:YES ];
        return YES;
    }

    [delegate uiViewTouched:NO ];
    return NO;
}
@end

У меня есть загружаемый пример / учебник онлайн здесь

...