2016-07-18 3 views
2

Следуя за Apple Guide to build a MealKeeper app, мне удалось создать текстовое поле и изображение. После перетаскивания UITapGestureRecognizer поверх представления изображения я добавил код, чтобы скрыть клавиатуру, отменив текстовое поле. MealKeeperКак игнорировать функцию `tap`?

Когда я запускаю этот код в симуляторе, я сначала нажимаю на текстовое поле, появляется клавиатура. Затем я нажимаю на изображение, клавиатура не скрывается.

Как проигнорировать функцию tap?

+0

Пожалуйста, не используйте ссылку на весь ваш проект ожидая, что она будет загружена и отлажено. Включите здесь необходимую информацию, чтобы вопрос был самодостаточным. –

+0

Единственная причина, по которой я загрузил свой проект (который имеет очень мало строк кода), заключается в том, что IDE (XCode в этом случае) может сделать что-то позади сцены в некоторых файлах метаданных. Я не знаю, актуальны ли эти изменения или мне нужно изменить тип проекта или что-то еще. – Believe2014

+0

... вам также не нужно включать ответ в свой вопрос; это именно то, для чего предназначена принятая функция ответа. –

ответ

2

Вам необходимо добавить к себе жест изображения, создать IBOutlet для вашего изображения и добавить следующее в 'viewDidLoad'.

let tapGestureRecognizer = UITapGestureRecognizer(target:self, action:Selector("tap:")) 
imageView.userInteractionEnabled = true 
imageView.addGestureRecognizer(tapGestureRecognizer) 

Удачи.

+0

Спасибо. Ваше предложение напоминает мне, что я пропустил один шаг: установка атрибута просмотра изображения 'User Interaction Enabled'. – Believe2014

0

Вы можете добавить делегатов прикосновений и отменить клавиатуру текстового поля.

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
UITouch * touch = [touches anyObject]; 
if(touch.phase == UITouchPhaseBegan) { 
    [self.myTextField resignFirstResponder]; 
} 

}

1

Для учащихся, которые полагаются на IDE, чтобы решить эту проблему, необходимо включить взаимодействие с пользователем вида изображения в.

enter image description here

0

Синтаксис немного отличается в последний Swift 2,3

class ViewController: UIViewController { 

@IBOutlet weak var textField: UITextField! 
@IBOutlet weak var imageView: UIImageView! 
@IBAction func tap(sender: UITapGestureRecognizer) { 
    textField.resignFirstResponder() 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 
    let tapGestureRecognizer = UITapGestureRecognizer(target:self, action:#selector(ViewController.tap(_:))) 
    imageView.userInteractionEnabled = true 
    imageView.addGestureRecognizer(tapGestureRecognizer) 
} 
} 
Смежные вопросы