Используйте str (ex) для печати исключения
try:
#your code
except ex:
print(str(ex))
Если вы хотите, чтобы только одна кнопка реагировала на прикосновения одновременно, вам нужно установить exclusiveTouch для этой кнопки, а не для родительского представления. В качестве альтернативы вы можете отключить другие кнопки, когда кнопка получает событие «Touch Down».
Вот пример последнего, который работал лучше в моем тестировании. Установка эксклюзивного Touch для кнопок вроде сработала, но привела к некоторым интересным проблемам, когда вы убрали палец с края кнопки, а не просто щелкнули по нему.
Вам нужно, чтобы розетки в вашем контроллере были подключены к каждой кнопке и подключите события «Touch Down», «Touch Up Inside» и «Touch Up Outside» к правильным методам в вашем контроллере.
#import "multibuttonsViewController.h"
@implementation multibuttonsViewController
// hook this up to "Touch Down" for each button
- (IBAction) pressed: (id) sender
{
if (sender == one)
{
two.enabled = false;
three.enabled = false;
[label setText: @"One"]; // or whatever you want to do
}
else if (sender == two)
{
one.enabled = false;
three.enabled = false;
[label setText: @"Two"]; // or whatever you want to do
}
else
{
one.enabled = false;
two.enabled = false;
[label setText: @"Three"]; // or whatever you want to do
}
}
// hook this up to "Touch Up Inside" and "Touch Up Outside"
- (IBAction) released: (id) sender
{
one.enabled = true;
two.enabled = true;
three.enabled = true;
}
@end
Мой опыт показывает, что по умолчанию новый проект даже не поддерживает мультитач, вы должны его включить. Но я полагаю, это зависит от того, как вы начали. Вы использовали пример mutlitouch в качестве шаблона?
Прежде всего, вы абсолютно уверены, что мультитач включен? Можно довольно быстро последовательно создавать отдельные штрихи. Мультитач - это больше похоже на то, что вы делаете двумя или более пальцами, когда они находятся на поверхности. Возможно, у вас есть однократное касание, но вы неправильно справляетесь с тем, что происходит, если две кнопки нажимаются почти одновременно.
У вас есть несколько способов сделать это:
У меня как раз была такая проблема.
Решение, которое мы придумали, заключалось в том, чтобы просто унаследовать новый класс от UIButton, который переопределяет метод initWithCoder, и использовать его там, где нам нужно было нажимать одну кнопку за раз (т.е. везде):
@implementation ExclusiveButton
(id)initWithCoder: (NSCoder*)decoder
{
[self setExclusiveTouch:YES];
return [super initWithCoder:decoder]
}
@end
Обратите внимание, что это работает только с кнопками, загруженными из файлов пера.